@siliconst/metaui 1.4.34 → 1.4.44
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/README.md +1 -1
- package/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +22 -20
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +24 -16
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js +62 -2
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts +54 -0
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.ts +59 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +43 -47
- 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 +2 -2
- 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 +61 -66
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +120 -63
- 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 +16 -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 +126 -65
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +41 -38
- 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 +6 -4
- 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 +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 +47 -39
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +41 -2
- 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 +6 -2
- 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 +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 +47 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +7 -2
- 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 -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 +7 -2
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +212 -34
- 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 +21 -3
- 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 +214 -35
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js +3 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.ts +3 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js +5 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.ts +6 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +8 -0
- 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.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 +7 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +127 -50
- 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 +13 -0
- 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 +140 -57
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js +229 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts +68 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.ts +227 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +34 -13
- 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 +4 -4
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +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 +45 -20
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +15 -3
- 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.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +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 +15 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +82 -16
- 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 +16 -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 +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 +89 -17
- 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 +12 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +13 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts +50 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.ts +49 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +21 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +24 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +26 -31
- 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.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +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 +22 -25
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +40 -6
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.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 +37 -5
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +69 -56
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +3 -2
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +4 -3
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js +2 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.ts +4 -3
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +12 -8
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +16 -12
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +20 -12
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +25 -17
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +18 -11
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +23 -16
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +24 -100
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +10 -74
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +54 -117
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +7 -4
- 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 +1 -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 +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 +6 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +4 -4
- 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 +1 -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 +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +129 -9
- 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 +45 -4
- 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 +143 -13
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +35 -14
- 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 +38 -14
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +69 -20
- 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 +2 -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 +77 -21
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +6 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +8 -3
- 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 +1 -1
- 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 +9 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.ts +3 -3
- 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 +1 -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 +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +6 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +9 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +35 -20
- 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 +1 -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 +39 -22
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +5 -3
- 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 +1 -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 +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 +4 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +28 -12
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +5 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +29 -10
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -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 +1 -1
- 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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +13 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +14 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +2 -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 +1 -1
- 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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +58 -56
- 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 +2 -5
- 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 +66 -55
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +2 -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 +1 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +2 -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 +1 -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 +3 -3
- 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.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +110 -109
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +2 -1
- 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.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +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 +66 -64
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +29 -8
- 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 +1 -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 +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 +145 -118
- 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.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +106 -105
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js +41 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js +41 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js +52 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts +30 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.ts +45 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js +52 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts +30 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.ts +45 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js +41 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js +33 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts +14 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +0 -75
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +0 -47
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +0 -72
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BooleanPlugin.js","names":["BasePlugin","___BasePlugin","BooleanPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","undefined","formatter","val","applyCommonDirectives","
|
|
1
|
+
{"version":3,"file":"BooleanPlugin.js","names":["BasePlugin","___BasePlugin","BooleanPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","BLOCKED_PROPS","filter","p","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","undefined","formatter","val","applyCommonDirectives","onChangeFn","oEvent","getParameter","result","validate","isValid","errorMessage","ui","widget","Switch","state","enabled","readOnly","change","CheckBox","width","selected","select","getValue","getState","getSelected","applyState","setEnabled","__exports","__esModule"],"sources":["BooleanPlugin.ts"],"sourcesContent":["/**\n * @file BooleanPlugin.ts\n * @description Renders a sap.m.Switch for boolean states.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport CheckBox from \"sap/m/CheckBox\";\nimport Switch from \"sap/m/Switch\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering logic for toggleable booleans using `sap.m.CheckBox`.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class BooleanPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.CheckBox` component for boolean evaluation.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @returns {Control} The configured CheckBox control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n // text is safe for Boolean controls\n this.BLOCKED_PROPS = this.BLOCKED_PROPS.filter(p => p !== \"text\");\n\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;\n \n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName, undefined, {\n formatter: (val: boolean) => val ? \"Yes\" : \"No\"\n })\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n const onChangeFn = (oEvent: sap.ui.base.Event) => {\n const val = (oEvent as any).getParameter(\"state\") ?? (oEvent as any).getParameter(\"selected\");\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n };\n\n if (fieldMetadata.ui?.widget === \"switch\") {\n this.control = new Switch({\n id: this.generateStableId(engineScopeId, bindingPath),\n state: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n change: onChangeFn\n });\n } else {\n this.control = new CheckBox({\n id: this.generateStableId(engineScopeId, bindingPath),\n width: \"100%\",\n selected: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n select: onChangeFn\n });\n }\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current boolean state.\n * @returns {boolean} The selected state.\n */\n protected getValue(): unknown {\n if (!this.control) return false;\n if (this.control instanceof Switch) {\n return (this.control as Switch).getState();\n }\n return (this.control as CheckBox).getSelected();\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n if (this.control instanceof Switch) {\n (this.control as Switch).setEnabled(!this.metadata.ui?.readOnly);\n } else {\n (this.control as CheckBox).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n }\n}\n"],"mappings":"2GAAA,MAKSA,EAAUC,EAAA,cAaZ,MAAMC,UAAsBF,EASxBG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GAEvHC,KAAKC,cAAgBD,KAAKC,cAAcC,OAAOC,GAAKA,IAAM,QAE1DH,KAAKD,SAAWA,EAChBC,KAAKI,SAAWT,EAChBK,KAAKK,SAAWT,EAAYU,WAAW,KAAOV,EAAYW,UAAU,GAAKX,EAEzE,IAAKI,KAAKQ,WAAY,CAElBR,KAAKS,QAAU,IAAIC,EAAY,CAC3BC,GAAIX,KAAKY,iBAAiBd,EAAeF,GACzCiB,KAAMb,KAAKc,oBAAoBlB,EAAaC,EAAWkB,UAAW,CAC9DC,UAAYC,GAAiBA,EAAM,MAAQ,SAGnDjB,KAAKkB,sBAAsBlB,KAAKS,QAASd,EAAeE,GACxD,OAAOG,KAAKS,OAChB,CAEA,MAAMU,EAAcC,IAChB,MAAMH,EAAOG,EAAeC,aAAa,UAAaD,EAAeC,aAAa,YAClF,MAAMC,EAAStB,KAAKuB,WACpB,GAAIvB,KAAKD,SAAU,CACfC,KAAKD,SAASuB,EAAOE,QAASxB,KAAKK,SAAUiB,EAAOG,aACxD,GAGJ,GAAI9B,EAAc+B,IAAIC,SAAW,SAAU,CACvC3B,KAAKS,QAAU,IAAImB,EAAO,CACtBjB,GAAIX,KAAKY,iBAAiBd,EAAeF,GACzCiC,MAAO7B,KAAKc,oBAAoBlB,EAAaC,GAC7CiC,SAAUnC,EAAc+B,IAAIK,SAC5BC,OAAQb,GAEhB,KAAO,CACHnB,KAAKS,QAAU,IAAIwB,EAAS,CACxBtB,GAAIX,KAAKY,iBAAiBd,EAAeF,GACzCsC,MAAO,OACPC,SAAUnC,KAAKc,oBAAoBlB,EAAaC,GAChDiC,SAAUnC,EAAc+B,IAAIK,SAC5BK,OAAQjB,GAEhB,CAEAnB,KAAKkB,sBAAsBlB,KAAKS,QAASd,EAAeE,GAExD,OAAOG,KAAKS,OAChB,CAMU4B,WACN,IAAKrC,KAAKS,QAAS,OAAO,MAC1B,GAAIT,KAAKS,mBAAmBmB,EAAQ,CAChC,OAAQ5B,KAAKS,QAAmB6B,UACpC,CACA,OAAQtC,KAAKS,QAAqB8B,aACtC,CAKUC,aACN,GAAIxC,KAAKS,SAAWT,KAAKI,SAAU,CAC/B,IAAKJ,KAAKQ,WAAY,OACtB,GAAIR,KAAKS,mBAAmBmB,EAAQ,CAC/B5B,KAAKS,QAAmBgC,YAAYzC,KAAKI,SAASsB,IAAIK,SAC3D,KAAO,CACF/B,KAAKS,QAAqBgC,YAAYzC,KAAKI,SAASsB,IAAIK,SAC7D,CACJ,CACJ,EACH,IAAAW,EAAA,CAAAC,WAAA,MAAAD,EAAAjD,gBAAA,OAAAiD,CAAA","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { BasePlugin } from "./BasePlugin";
|
|
7
7
|
import { IPropertyMetadata } from "../../interfaces/ISchema";
|
|
8
8
|
import CheckBox from "sap/m/CheckBox";
|
|
9
|
+
import Switch from "sap/m/Switch";
|
|
9
10
|
import Control from "sap/ui/core/Control";
|
|
10
11
|
import TextControl from "sap/m/Text";
|
|
11
12
|
|
|
@@ -24,7 +25,10 @@ export class BooleanPlugin extends BasePlugin {
|
|
|
24
25
|
* @param modelName The UI5 JSONModel name.
|
|
25
26
|
* @returns {Control} The configured CheckBox control.
|
|
26
27
|
*/
|
|
27
|
-
public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
|
|
28
|
+
public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
|
|
29
|
+
// text is safe for Boolean controls
|
|
30
|
+
this.BLOCKED_PROPS = this.BLOCKED_PROPS.filter(p => p !== "text");
|
|
31
|
+
|
|
28
32
|
this.onChange = onChange;
|
|
29
33
|
this.metadata = fieldMetadata;
|
|
30
34
|
this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;
|
|
@@ -41,18 +45,30 @@ export class BooleanPlugin extends BasePlugin {
|
|
|
41
45
|
return this.control as Control;
|
|
42
46
|
}
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const val = (oEvent as any).getParameter("selected");
|
|
50
|
-
const result = this.validateAndApplyVisualState();
|
|
51
|
-
if (this.onChange) {
|
|
52
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
53
|
-
}
|
|
48
|
+
const onChangeFn = (oEvent: sap.ui.base.Event) => {
|
|
49
|
+
const val = (oEvent as any).getParameter("state") ?? (oEvent as any).getParameter("selected");
|
|
50
|
+
const result = this.validate();
|
|
51
|
+
if (this.onChange) {
|
|
52
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
54
53
|
}
|
|
55
|
-
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
if (fieldMetadata.ui?.widget === "switch") {
|
|
57
|
+
this.control = new Switch({
|
|
58
|
+
id: this.generateStableId(engineScopeId, bindingPath),
|
|
59
|
+
state: this.generateBindingInfo(bindingPath, modelName),
|
|
60
|
+
enabled: !fieldMetadata.ui?.readOnly,
|
|
61
|
+
change: onChangeFn
|
|
62
|
+
});
|
|
63
|
+
} else {
|
|
64
|
+
this.control = new CheckBox({
|
|
65
|
+
id: this.generateStableId(engineScopeId, bindingPath),
|
|
66
|
+
width: "100%",
|
|
67
|
+
selected: this.generateBindingInfo(bindingPath, modelName),
|
|
68
|
+
enabled: !fieldMetadata.ui?.readOnly,
|
|
69
|
+
select: onChangeFn
|
|
70
|
+
});
|
|
71
|
+
}
|
|
56
72
|
|
|
57
73
|
this.applyCommonDirectives(this.control, fieldMetadata, modelName);
|
|
58
74
|
|
|
@@ -64,7 +80,11 @@ export class BooleanPlugin extends BasePlugin {
|
|
|
64
80
|
* @returns {boolean} The selected state.
|
|
65
81
|
*/
|
|
66
82
|
protected getValue(): unknown {
|
|
67
|
-
|
|
83
|
+
if (!this.control) return false;
|
|
84
|
+
if (this.control instanceof Switch) {
|
|
85
|
+
return (this.control as Switch).getState();
|
|
86
|
+
}
|
|
87
|
+
return (this.control as CheckBox).getSelected();
|
|
68
88
|
}
|
|
69
89
|
|
|
70
90
|
/**
|
|
@@ -73,7 +93,11 @@ export class BooleanPlugin extends BasePlugin {
|
|
|
73
93
|
protected applyState(): void {
|
|
74
94
|
if (this.control && this.metadata) {
|
|
75
95
|
if (!this.isEditable) return;
|
|
76
|
-
(this.control
|
|
96
|
+
if (this.control instanceof Switch) {
|
|
97
|
+
(this.control as Switch).setEnabled(!this.metadata.ui?.readOnly);
|
|
98
|
+
} else {
|
|
99
|
+
(this.control as CheckBox).setEnabled(!this.metadata.ui?.readOnly);
|
|
100
|
+
}
|
|
77
101
|
}
|
|
78
102
|
}
|
|
79
103
|
}
|
|
@@ -42,9 +42,9 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/CameraControl", "sap/m/
|
|
|
42
42
|
|
|
43
43
|
// Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.
|
|
44
44
|
this.control.attachEvent('capture', () => {
|
|
45
|
-
const result = this.
|
|
45
|
+
const result = this.validate();
|
|
46
46
|
if (this.onChange) {
|
|
47
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
47
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
return this.control;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachEvent","result","
|
|
1
|
+
{"version":3,"file":"CameraPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachEvent","result","validate","isValid","errorMessage","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["CameraPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CameraControl from \"../../controls/CameraControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class CameraPlugin extends BasePlugin {\n /**\n * Renders a `CameraControl` component.\n * \n * @param metadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CameraControl.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = metadata;\n this.fieldKey = bindingPath.replace('/', '');\n this.modelName = modelName;\n\n if (!this.isEditable) {\n \n this.control = new ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: this.generateBindingInfo(bindingPath, modelName),\n width: \"400px\",\n alt: metadata.ui?.label || \"Image\"\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new CameraControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n });\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.\n (this.control as CameraControl).attachEvent('capture', () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current base64 image state.\n * @returns {unknown} The image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CameraControl).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;;;;QAASA,UAAU,GAAAC,sBAAA;EAAA,MAGZC,aAAa,GAAAC,sBAAA,CAAAC,eAAA;EAGb,MAAMC,YAAY,SAASL,UAAU,CAAC;IACzC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWM,MAAMA,CAACC,QAA2B,EAAGC,WAAmB,EAAGC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAmG,EAAW;MAChO,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACJ,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACK,QAAQ,GAAGJ,WAAW,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;MAC5C,IAAI,CAACJ,SAAS,GAAGA,SAAS;MAE1B,IAAI,CAAC,IAAI,CAACK,UAAU,EAAE;QAElB,IAAI,CAACC,OAAO,GAAG,IAAIC,YAAY,CAAC;UAC5BC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;UACrDW,GAAG,EAAE,IAAI,CAACC,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;UACrDY,KAAK,EAAE,OAAO;UACdC,GAAG,EAAEf,QAAQ,CAACgB,EAAE,EAAEC,KAAK,IAAI;QAC/B,CAAC,CAAC;QACF,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACV,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;QAC7D,OAAO,IAAI,CAACM,OAAO;MACvB;MAEA,IAAI,CAACA,OAAO,GAAG,IAAIb,aAAa,CAAC;QAC7Be,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;QACrDkB,KAAK,EAAE,IAAI,CAACN,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;QACvDkB,cAAc,EAAEpB,QAAQ;QACxBqB,QAAQ,EAAE,CAAC,CAACrB,QAAQ,CAACgB,EAAE,EAAEK;MAC7B,CAAC,CAAC;MAEF,IAAI,CAACH,qBAAqB,CAAC,IAAI,CAACV,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;;MAE7D;MACC,IAAI,CAACM,OAAO,CAAmBc,WAAW,CAAC,SAAS,EAAE,MAAM;QACzD,MAAMC,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;QAC1B,IAAI,IAAI,CAACpB,QAAQ,EAAE;UACf,IAAI,CAACA,QAAQ,CAACmB,MAAM,CAACE,OAAO,EAAE,IAAI,CAACpB,QAAQ,EAAEkB,MAAM,CAACG,YAAY,CAAC;QACrE;MACR,CAAC,CAAC;MAEF,OAAO,IAAI,CAAClB,OAAO;IACvB;;IAEA;AACJ;AACA;AACA;IACcmB,QAAQA,CAAA,EAAY;MAC1B,OAAO,IAAI,CAACnB,OAAO,GAAI,IAAI,CAACA,OAAO,CAAmBoB,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IACrF;;IAEA;AACJ;AACA;IACcC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACrB,OAAO,IAAI,IAAI,CAACR,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACO,UAAU,EAAE;QACrB,IAAI,CAACC,OAAO,CAAyBsB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC9B,QAAQ,CAACgB,EAAE,EAAEK,QAAQ,CAAC;MAC/F;IACJ;EACJ;EAAC,IAAAU,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAjC,YAAA,GAAAA,YAAA;EAAA,OAAAiC,SAAA;AAAA","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin" {
|
|
|
13
13
|
* @param onChange The callback fired on value change.
|
|
14
14
|
* @returns {Control} The configured CameraControl.
|
|
15
15
|
*/
|
|
16
|
-
render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
|
|
16
|
+
render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
|
|
17
17
|
/**
|
|
18
18
|
* Retrieves the current base64 image state.
|
|
19
19
|
* @returns {unknown} The image value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,0DAA0D,CAAC;IAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAI1C,MAAa,YAAa,SAAQ,UAAU;QACxC;;;;;;;;;WASG;QACI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"CameraPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,0DAA0D,CAAC;IAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAI1C,MAAa,YAAa,SAAQ,UAAU;QACxC;;;;;;;;;WASG;QACI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAsCnO;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["../controls/BasePlugin","../../controls/CameraControl","sap/m/Image"],function(t,e,i){"use strict";function a(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const n=t["BasePlugin"];const s=a(e);class r extends n{render(t,e,a="meta",n,r){this.onChange=r;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=a;if(!this.isEditable){this.control=new i({id:this.generateStableId(n,e),src:this.generateBindingInfo(e,a),width:"400px",alt:t.ui?.label||"Image"});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new s({id:this.generateStableId(n,e),value:this.generateBindingInfo(e,a),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,a);this.control.attachEvent("capture",()=>{const t=this.
|
|
1
|
+
sap.ui.define(["../controls/BasePlugin","../../controls/CameraControl","sap/m/Image"],function(t,e,i){"use strict";function a(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const n=t["BasePlugin"];const s=a(e);class r extends n{render(t,e,a="meta",n,r){this.onChange=r;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=a;if(!this.isEditable){this.control=new i({id:this.generateStableId(n,e),src:this.generateBindingInfo(e,a),width:"400px",alt:t.ui?.label||"Image"});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new s({id:this.generateStableId(n,e),value:this.generateBindingInfo(e,a),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,a);this.control.attachEvent("capture",()=>{const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey,t.errorMessage)}});return this.control}getValue(){return this.control?this.control.getProperty("value"):null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var o={__esModule:true};o.CameraPlugin=r;return o});
|
|
2
2
|
//# sourceMappingURL=CameraPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraPlugin.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachEvent","result","
|
|
1
|
+
{"version":3,"file":"CameraPlugin.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachEvent","result","validate","isValid","errorMessage","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["CameraPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CameraControl from \"../../controls/CameraControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class CameraPlugin extends BasePlugin {\n /**\n * Renders a `CameraControl` component.\n * \n * @param metadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CameraControl.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = metadata;\n this.fieldKey = bindingPath.replace('/', '');\n this.modelName = modelName;\n\n if (!this.isEditable) {\n \n this.control = new ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: this.generateBindingInfo(bindingPath, modelName),\n width: \"400px\",\n alt: metadata.ui?.label || \"Image\"\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new CameraControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n });\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.\n (this.control as CameraControl).attachEvent('capture', () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current base64 image state.\n * @returns {unknown} The image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CameraControl).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"0MAASA,EAAUC,EAAA,oBAGZC,EAAaC,EAAAC,GAGb,MAAMC,UAAqBL,EAWvBM,OAAOC,EAA8BC,EAAsBC,EAAoB,OAAQC,EAAwBC,GAClHC,KAAKD,SAAWA,EAChBC,KAAKL,SAAWA,EAChBK,KAAKC,SAAWL,EAAYM,QAAQ,IAAK,IACzCF,KAAKH,UAAYA,EAEjB,IAAKG,KAAKG,WAAY,CAElBH,KAAKI,QAAU,IAAIC,EAAa,CAC5BC,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCY,IAAKR,KAAKS,oBAAoBb,EAAaC,GAC3Ca,MAAO,QACPC,IAAKhB,EAASiB,IAAIC,OAAS,UAE/Bb,KAAKc,sBAAsBd,KAAKI,QAAST,EAAUE,GACnD,OAAOG,KAAKI,OAChB,CAEAJ,KAAKI,QAAU,IAAId,EAAc,CAC7BgB,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCmB,MAAOf,KAAKS,oBAAoBb,EAAaC,GAC7CmB,eAAgBrB,EAChBsB,WAAYtB,EAASiB,IAAIK,WAG7BjB,KAAKc,sBAAsBd,KAAKI,QAAST,EAAUE,GAGlDG,KAAKI,QAA0Bc,YAAY,UAAW,KACnD,MAAMC,EAASnB,KAAKoB,WAChB,GAAIpB,KAAKD,SAAU,CACfC,KAAKD,SAASoB,EAAOE,QAASrB,KAAKC,SAAUkB,EAAOG,aACxD,IAGR,OAAOtB,KAAKI,OAChB,CAMUmB,WACN,OAAOvB,KAAKI,QAAWJ,KAAKI,QAA0BoB,YAAY,SAAW,IACjF,CAKUC,aACN,GAAIzB,KAAKI,SAAWJ,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKI,QAAgCsB,YAAY,aAAc1B,KAAKL,SAASiB,IAAIK,SACtF,CACJ,EACH,IAAAU,EAAA,CAAAC,WAAA,MAAAD,EAAAlC,eAAA,OAAAkC,CAAA","ignoreList":[]}
|
|
@@ -15,7 +15,7 @@ export class CameraPlugin extends BasePlugin {
|
|
|
15
15
|
* @param onChange The callback fired on value change.
|
|
16
16
|
* @returns {Control} The configured CameraControl.
|
|
17
17
|
*/
|
|
18
|
-
public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
|
|
18
|
+
public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
|
|
19
19
|
this.onChange = onChange;
|
|
20
20
|
this.metadata = metadata;
|
|
21
21
|
this.fieldKey = bindingPath.replace('/', '');
|
|
@@ -44,9 +44,9 @@ export class CameraPlugin extends BasePlugin {
|
|
|
44
44
|
|
|
45
45
|
// Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.
|
|
46
46
|
(this.control as CameraControl).attachEvent('capture', () => {
|
|
47
|
-
const result = this.
|
|
47
|
+
const result = this.validate();
|
|
48
48
|
if (this.onChange) {
|
|
49
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
49
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
50
50
|
}
|
|
51
51
|
});
|
|
52
52
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
sap.ui.define(["./BasePlugin", "sap/ui/codeeditor/CodeEditor"], function (___BasePlugin, CodeEditor) {
|
|
1
|
+
sap.ui.define(["./BasePlugin", "sap/ui/codeeditor/CodeEditor", "sap/m/HBox", "sap/m/Button", "sap/m/Dialog", "sap/m/FlexItemData"], function (___BasePlugin, CodeEditor, HBox, Button, Dialog, FlexItemData) {
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -47,12 +47,15 @@ sap.ui.define(["./BasePlugin", "sap/ui/codeeditor/CodeEditor"], function (___Bas
|
|
|
47
47
|
* Dynamically adjusts the height of the editor based on content lines.
|
|
48
48
|
*/
|
|
49
49
|
adjustHeight() {
|
|
50
|
-
if (!this.
|
|
51
|
-
|
|
50
|
+
if (!this.codeEditorRef) return;
|
|
51
|
+
|
|
52
|
+
// If a static height was requested via ui.rows, do not auto-adjust
|
|
53
|
+
if (this.metadata?.ui?.rows) return;
|
|
54
|
+
const val = this.codeEditorRef.getProperty('value') || "";
|
|
52
55
|
const lines = val.split(/\r\n|\r|\n/).length;
|
|
53
56
|
// 18px per line + 20px padding, minimum 100px
|
|
54
57
|
const newHeight = Math.max(100, lines * 18 + 20);
|
|
55
|
-
this.
|
|
58
|
+
this.codeEditorRef.setHeight(newHeight + "px");
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
/**
|
|
@@ -70,42 +73,88 @@ sap.ui.define(["./BasePlugin", "sap/ui/codeeditor/CodeEditor"], function (___Bas
|
|
|
70
73
|
this.metadata = fieldMetadata;
|
|
71
74
|
this.fieldKey = bindingPath.replace("/", ""); // For EventBus
|
|
72
75
|
|
|
73
|
-
|
|
76
|
+
const schemaRows = fieldMetadata.ui?.rows;
|
|
77
|
+
const useDialog = fieldMetadata.ui?.expandable !== false;
|
|
78
|
+
const baseHeight = schemaRows ? schemaRows * 18 + 20 + "px" : "200px"; // 200px is ~10 rows
|
|
79
|
+
|
|
80
|
+
const codeEditor = new CodeEditor({
|
|
74
81
|
id: this.generateStableId(engineScopeId, bindingPath),
|
|
75
82
|
value: this.generateBindingInfo(bindingPath, modelName),
|
|
76
83
|
type: fieldMetadata.ui?.args || "javascript",
|
|
77
84
|
// will be dynamically overridden if args is missing
|
|
78
85
|
editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,
|
|
79
|
-
height:
|
|
86
|
+
height: baseHeight,
|
|
80
87
|
// Initial minimum height
|
|
81
88
|
width: "100%",
|
|
82
89
|
change: () => {
|
|
83
|
-
const result = this.
|
|
90
|
+
const result = this.validate();
|
|
84
91
|
if (this.onChange) {
|
|
85
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
92
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
86
93
|
}
|
|
87
94
|
|
|
88
95
|
// If language isn't explicitly defined, try to guess it dynamically
|
|
89
96
|
if (!fieldMetadata.ui?.args) {
|
|
90
|
-
const currentVal = this.
|
|
97
|
+
const currentVal = this.codeEditorRef.getProperty('value');
|
|
91
98
|
const detectedType = this.detectLanguage(currentVal);
|
|
92
|
-
if (this.
|
|
93
|
-
this.
|
|
99
|
+
if (this.codeEditorRef.getType() !== detectedType) {
|
|
100
|
+
this.codeEditorRef.setType(detectedType);
|
|
94
101
|
}
|
|
95
102
|
}
|
|
96
103
|
this.adjustHeight();
|
|
97
104
|
}
|
|
98
105
|
});
|
|
106
|
+
this.codeEditorRef = codeEditor;
|
|
107
|
+
this.mainControl = codeEditor;
|
|
108
|
+
if (useDialog) {
|
|
109
|
+
const expandBtn = new Button({
|
|
110
|
+
icon: "sap-icon://full-screen",
|
|
111
|
+
type: "Transparent",
|
|
112
|
+
tooltip: "Expand Code Editor",
|
|
113
|
+
press: () => {
|
|
114
|
+
const dlg = new Dialog({
|
|
115
|
+
title: fieldMetadata.title || fieldMetadata.ui?.label || "Edit Code",
|
|
116
|
+
contentWidth: "80%",
|
|
117
|
+
contentHeight: "80%",
|
|
118
|
+
verticalScrolling: false,
|
|
119
|
+
resizable: true,
|
|
120
|
+
content: new CodeEditor({
|
|
121
|
+
value: this.generateBindingInfo(bindingPath, modelName),
|
|
122
|
+
type: this.codeEditorRef.getType(),
|
|
123
|
+
width: "100%",
|
|
124
|
+
height: "100%",
|
|
125
|
+
editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly
|
|
126
|
+
}),
|
|
127
|
+
beginButton: new Button({
|
|
128
|
+
text: "Close",
|
|
129
|
+
press: () => dlg.close()
|
|
130
|
+
}),
|
|
131
|
+
afterClose: () => dlg.destroy()
|
|
132
|
+
});
|
|
133
|
+
this.control?.addDependent(dlg);
|
|
134
|
+
dlg.open();
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
codeEditor.setLayoutData(new FlexItemData({
|
|
138
|
+
growFactor: 1
|
|
139
|
+
}));
|
|
140
|
+
this.control = new HBox({
|
|
141
|
+
width: "100%",
|
|
142
|
+
alignItems: "Start",
|
|
143
|
+
items: [codeEditor, expandBtn]
|
|
144
|
+
});
|
|
145
|
+
} else {
|
|
146
|
+
this.control = codeEditor;
|
|
147
|
+
}
|
|
99
148
|
|
|
100
149
|
// Clean architecture: Wait for the model context, then attach safely to the binding itself.
|
|
101
150
|
// No timeouts, no DOM hacks, pure UI5 Eventing.
|
|
102
|
-
this.
|
|
103
|
-
const oBinding = this.
|
|
151
|
+
this.codeEditorRef.attachEventOnce("modelContextChange", () => {
|
|
152
|
+
const oBinding = this.codeEditorRef.getBinding("value");
|
|
104
153
|
const initLogic = () => {
|
|
105
|
-
if (this.
|
|
106
|
-
const currentVal = this.
|
|
154
|
+
if (this.codeEditorRef) {
|
|
155
|
+
const currentVal = this.codeEditorRef.getProperty('value');
|
|
107
156
|
if (!fieldMetadata.ui?.args) {
|
|
108
|
-
this.
|
|
157
|
+
this.codeEditorRef.setType(this.detectLanguage(currentVal));
|
|
109
158
|
}
|
|
110
159
|
this.adjustHeight();
|
|
111
160
|
// CRITICAL: Ace Editor sometimes loses its constructor `editable` flag
|
|
@@ -131,18 +180,18 @@ sap.ui.define(["./BasePlugin", "sap/ui/codeeditor/CodeEditor"], function (___Bas
|
|
|
131
180
|
* @returns {unknown} The code value.
|
|
132
181
|
*/
|
|
133
182
|
getValue() {
|
|
134
|
-
return this.
|
|
183
|
+
return this.codeEditorRef ? this.codeEditorRef.getProperty('value') : null;
|
|
135
184
|
}
|
|
136
185
|
|
|
137
186
|
/**
|
|
138
187
|
* Applies dynamic read-only state.
|
|
139
188
|
*/
|
|
140
189
|
applyState() {
|
|
141
|
-
if (this.
|
|
190
|
+
if (this.codeEditorRef && this.metadata) {
|
|
142
191
|
if (!this.isEditable) {
|
|
143
|
-
this.
|
|
192
|
+
this.codeEditorRef.setEditable(false);
|
|
144
193
|
} else {
|
|
145
|
-
this.
|
|
194
|
+
this.codeEditorRef.setEditable(!this.metadata.ui?.readOnly);
|
|
146
195
|
}
|
|
147
196
|
}
|
|
148
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditorPlugin-dbg.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","control","val","getProperty","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","CodeEditor","id","generateStableId","generateBindingInfo","type","ui","args","editable","isEditable","readOnly","height","width","change","result","validateAndApplyVisualState","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","applyState","attachChange","applyCommonDirectives","getValue","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CodeEditor from \"sap/ui/codeeditor/CodeEditor\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as CodeEditor).getProperty('value') || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as CodeEditor).setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CodeEditor control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n \n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as CodeEditor).getProperty('value');\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as CodeEditor).getType() !== detectedType) {\n (this.control as CodeEditor).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as CodeEditor).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as CodeEditor).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as CodeEditor).getProperty('value');\n if (!fieldMetadata.ui?.args) {\n (this.control as CodeEditor).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n // CRITICAL: Ace Editor sometimes loses its constructor `editable` flag \n // when the model asynchronously injects a new value string. \n // We must forcefully re-apply the correct state after binding.\n this.applyState();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {unknown} The code value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CodeEditor).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) {\n (this.control as CodeEditor).setEditable(false);\n } else {\n (this.control as CodeEditor).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CodeEditorPlugin-dbg.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","codeEditorRef","metadata","ui","rows","val","getProperty","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","schemaRows","useDialog","expandable","baseHeight","codeEditor","CodeEditor","id","generateStableId","generateBindingInfo","type","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","errorMessage","currentVal","detectedType","getType","setType","mainControl","expandBtn","Button","icon","tooltip","press","dlg","Dialog","title","label","contentWidth","contentHeight","verticalScrolling","resizable","content","beginButton","text","close","afterClose","destroy","control","addDependent","open","setLayoutData","FlexItemData","growFactor","HBox","alignItems","items","attachEventOnce","oBinding","getBinding","initLogic","applyState","attachChange","applyCommonDirectives","getValue","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CodeEditor from \"sap/ui/codeeditor/CodeEditor\";\nimport HBox from \"sap/m/HBox\";\nimport Button from \"sap/m/Button\";\nimport Dialog from \"sap/m/Dialog\";\nimport FlexItemData from \"sap/m/FlexItemData\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n private codeEditorRef?: CodeEditor;\n\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.codeEditorRef) return;\n \n // If a static height was requested via ui.rows, do not auto-adjust\n if (this.metadata?.ui?.rows) return;\n \n const val = this.codeEditorRef.getProperty('value') || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n this.codeEditorRef.setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CodeEditor control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n const schemaRows = fieldMetadata.ui?.rows;\n const useDialog = fieldMetadata.ui?.expandable !== false;\n const baseHeight = schemaRows ? (schemaRows * 18 + 20) + \"px\" : \"200px\"; // 200px is ~10 rows\n \n const codeEditor = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: baseHeight, // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = this.codeEditorRef!.getProperty('value');\n const detectedType = this.detectLanguage(currentVal);\n if (this.codeEditorRef!.getType() !== detectedType) {\n this.codeEditorRef!.setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n \n this.codeEditorRef = codeEditor;\n this.mainControl = codeEditor;\n\n if (useDialog) {\n const expandBtn = new Button({\n icon: \"sap-icon://full-screen\",\n type: \"Transparent\",\n tooltip: \"Expand Code Editor\",\n press: () => {\n const dlg = new Dialog({\n title: fieldMetadata.title || fieldMetadata.ui?.label || \"Edit Code\",\n contentWidth: \"80%\",\n contentHeight: \"80%\",\n verticalScrolling: false,\n resizable: true,\n content: new CodeEditor({\n value: this.generateBindingInfo(bindingPath, modelName),\n type: this.codeEditorRef!.getType(),\n width: \"100%\",\n height: \"100%\",\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly\n }),\n beginButton: new Button({\n text: \"Close\",\n press: () => dlg.close()\n }),\n afterClose: () => dlg.destroy()\n });\n this.control?.addDependent(dlg);\n dlg.open();\n }\n });\n\n codeEditor.setLayoutData(new FlexItemData({ growFactor: 1 }));\n\n this.control = new HBox({\n width: \"100%\",\n alignItems: \"Start\",\n items: [codeEditor, expandBtn]\n });\n } else {\n this.control = codeEditor;\n }\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n this.codeEditorRef.attachEventOnce(\"modelContextChange\", () => {\n const oBinding = this.codeEditorRef!.getBinding(\"value\");\n \n const initLogic = () => {\n if (this.codeEditorRef) {\n const currentVal = this.codeEditorRef.getProperty('value');\n if (!fieldMetadata.ui?.args) {\n this.codeEditorRef.setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n // CRITICAL: Ace Editor sometimes loses its constructor `editable` flag \n // when the model asynchronously injects a new value string. \n // We must forcefully re-apply the correct state after binding.\n this.applyState();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {unknown} The code value.\n */\n protected getValue(): unknown {\n return this.codeEditorRef ? this.codeEditorRef.getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.codeEditorRef && this.metadata) {\n if (!this.isEditable) {\n this.codeEditorRef.setEditable(false);\n } else {\n this.codeEditorRef.setEditable(!this.metadata.ui?.readOnly);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin" {
|
|
|
14
14
|
* @public
|
|
15
15
|
*/
|
|
16
16
|
export class CodeEditorPlugin extends BasePlugin {
|
|
17
|
+
private codeEditorRef?;
|
|
17
18
|
/**
|
|
18
19
|
* Infers the language type from the content.
|
|
19
20
|
* @param value The raw string.
|
|
@@ -34,7 +35,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin" {
|
|
|
34
35
|
* @param onChange The callback fired on value change.
|
|
35
36
|
* @returns {Control} The configured CodeEditor control.
|
|
36
37
|
*/
|
|
37
|
-
render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
|
|
38
|
+
render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
|
|
38
39
|
/**
|
|
39
40
|
* Retrieves the current code string.
|
|
40
41
|
* @returns {unknown} The code value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditorPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeEditorPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAO1C;;;;;;OAMG;IACH,MAAa,gBAAiB,SAAQ,UAAU;QAC5C,OAAO,CAAC,aAAa,CAAC,CAAa;QAEnC;;;;WAIG;QACH,OAAO,CAAC,cAAc;QAyBtB;;WAEG;QACH,OAAO,CAAC,YAAY;QAapB;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAgHtO;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAS/B;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["./BasePlugin","sap/ui/codeeditor/CodeEditor"],function(t,e){"use strict";const
|
|
1
|
+
sap.ui.define(["./BasePlugin","sap/ui/codeeditor/CodeEditor","sap/m/HBox","sap/m/Button","sap/m/Dialog","sap/m/FlexItemData"],function(t,e,i,s,a,o){"use strict";const n=t["BasePlugin"];class r extends n{detectLanguage(t){if(!t||typeof t!=="string")return"javascript";const e=t.trim();if(e==="")return"javascript";if(e.startsWith("{")||e.startsWith("[")){try{JSON.parse(e);return"json"}catch(t){}}if(/^\s*<[\s\S]*>\s*$/.test(e)){return"xml"}return"javascript"}adjustHeight(){if(!this.codeEditorRef)return;if(this.metadata?.ui?.rows)return;const t=this.codeEditorRef.getProperty("value")||"";const e=t.split(/\r\n|\r|\n/).length;const i=Math.max(100,e*18+20);this.codeEditorRef.setHeight(i+"px")}render(t,n,r="meta",d,h){this.onChange=h;this.metadata=t;this.fieldKey=n.replace("/","");const c=t.ui?.rows;const l=t.ui?.expandable!==false;const u=c?c*18+20+"px":"200px";const f=new e({id:this.generateStableId(d,n),value:this.generateBindingInfo(n,r),type:t.ui?.args||"javascript",editable:!this.isEditable?false:!t.ui?.readOnly,height:u,width:"100%",change:()=>{const e=this.validate();if(this.onChange){this.onChange(e.isValid,this.fieldKey,e.errorMessage)}if(!t.ui?.args){const t=this.codeEditorRef.getProperty("value");const e=this.detectLanguage(t);if(this.codeEditorRef.getType()!==e){this.codeEditorRef.setType(e)}}this.adjustHeight()}});this.codeEditorRef=f;this.mainControl=f;if(l){const d=new s({icon:"sap-icon://full-screen",type:"Transparent",tooltip:"Expand Code Editor",press:()=>{const i=new a({title:t.title||t.ui?.label||"Edit Code",contentWidth:"80%",contentHeight:"80%",verticalScrolling:false,resizable:true,content:new e({value:this.generateBindingInfo(n,r),type:this.codeEditorRef.getType(),width:"100%",height:"100%",editable:!this.isEditable?false:!t.ui?.readOnly}),beginButton:new s({text:"Close",press:()=>i.close()}),afterClose:()=>i.destroy()});this.control?.addDependent(i);i.open()}});f.setLayoutData(new o({growFactor:1}));this.control=new i({width:"100%",alignItems:"Start",items:[f,d]})}else{this.control=f}this.codeEditorRef.attachEventOnce("modelContextChange",()=>{const e=this.codeEditorRef.getBinding("value");const i=()=>{if(this.codeEditorRef){const e=this.codeEditorRef.getProperty("value");if(!t.ui?.args){this.codeEditorRef.setType(this.detectLanguage(e))}this.adjustHeight();this.applyState()}};if(e){e.attachChange(i)}i()});this.applyCommonDirectives(this.control,t,r);return this.control}getValue(){return this.codeEditorRef?this.codeEditorRef.getProperty("value"):null}applyState(){if(this.codeEditorRef&&this.metadata){if(!this.isEditable){this.codeEditorRef.setEditable(false)}else{this.codeEditorRef.setEditable(!this.metadata.ui?.readOnly)}}}}var d={__esModule:true};d.CodeEditorPlugin=r;return d});
|
|
2
2
|
//# sourceMappingURL=CodeEditorPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditorPlugin.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","this","control","val","getProperty","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","CodeEditor","id","generateStableId","generateBindingInfo","type","ui","args","editable","isEditable","readOnly","height","width","change","result","validateAndApplyVisualState","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","applyState","attachChange","applyCommonDirectives","getValue","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CodeEditor from \"sap/ui/codeeditor/CodeEditor\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as CodeEditor).getProperty('value') || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as CodeEditor).setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CodeEditor control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n \n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as CodeEditor).getProperty('value');\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as CodeEditor).getType() !== detectedType) {\n (this.control as CodeEditor).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as CodeEditor).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as CodeEditor).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as CodeEditor).getProperty('value');\n if (!fieldMetadata.ui?.args) {\n (this.control as CodeEditor).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n // CRITICAL: Ace Editor sometimes loses its constructor `editable` flag \n // when the model asynchronously injects a new value string. \n // We must forcefully re-apply the correct state after binding.\n this.applyState();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {unknown} The code value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CodeEditor).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) {\n (this.control as CodeEditor).setEditable(false);\n } else {\n (this.control as CodeEditor).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n }\n}\n"],"mappings":"yFAAA,MAKSA,EAAUC,EAAA,cAYZ,MAAMC,UAAyBF,EAM1BG,eAAeC,GACnB,IAAKA,UAAgBA,IAAU,SAAU,MAAO,aAEhD,MAAMC,EAAUD,EAAME,OACtB,GAAID,IAAY,GAAI,MAAO,aAG3B,GAAIA,EAAQE,WAAW,MAAQF,EAAQE,WAAW,KAAM,CACpD,IACIC,KAAKC,MAAMJ,GACX,MAAO,MACX,CAAE,MAAOK,GACL,CAER,CAGA,GAAI,oBAAoBC,KAAKN,GAAU,CACnC,MAAO,KACX,CAGA,MAAO,YACX,CAKQO,eACJ,IAAKC,KAAKC,QAAS,OACnB,MAAMC,EAAOF,KAAKC,QAAuBE,YAAY,UAAY,GACjE,MAAMC,EAAQF,EAAIG,MAAM,cAAcC,OAEtC,MAAMC,EAAYC,KAAKC,IAAI,IAAML,EAAQ,GAAM,IAC9CJ,KAAKC,QAAuBS,UAAUH,EAAY,KACvD,CAYOI,OAAOC,EAAkCC,EAAqBC,EAAoB,OAAQC,EAAwBC,GACrHhB,KAAKgB,SAAWA,EAChBhB,KAAKiB,SAAWL,EAChBZ,KAAKkB,SAAWL,EAAYM,QAAQ,IAAK,IAIzCnB,KAAKC,QAAU,IAAImB,EAAW,CAC1BC,GAAIrB,KAAKsB,iBAAiBP,EAAeF,GACzCtB,MAAOS,KAAKuB,oBAAoBV,EAAaC,GAC7CU,KAAMZ,EAAca,IAAIC,MAAQ,aAChCC,UAAW3B,KAAK4B,WAAa,OAAShB,EAAca,IAAII,SACxDC,OAAQ,QACRC,MAAO,OACPC,OAAQA,KACJ,MAAMC,EAASjC,KAAKkC,8BACpB,GAAIlC,KAAKgB,SAAU,CACfhB,KAAKgB,SAASiB,EAAOE,QAASnC,KAAKkB,SACvC,CAGA,IAAKN,EAAca,IAAIC,KAAM,CACzB,MAAMU,EAAcpC,KAAKC,QAAuBE,YAAY,SAC5D,MAAMkC,EAAerC,KAAKV,eAAe8C,GACzC,GAAKpC,KAAKC,QAAuBqC,YAAcD,EAAc,CACxDrC,KAAKC,QAAuBsC,QAAQF,EACzC,CACJ,CAEArC,KAAKD,kBAMZC,KAAKC,QAAuBuC,gBAAgB,qBAAsB,KAC/D,MAAMC,EAAYzC,KAAKC,QAAuByC,WAAW,SAEzD,MAAMC,EAAYA,KACd,GAAI3C,KAAKC,QAAS,CACd,MAAMmC,EAAcpC,KAAKC,QAAuBE,YAAY,SAC5D,IAAKS,EAAca,IAAIC,KAAM,CACxB1B,KAAKC,QAAuBsC,QAAQvC,KAAKV,eAAe8C,GAC7D,CACApC,KAAKD,eAILC,KAAK4C,YACT,GAGJ,GAAIH,EAAU,CAEVA,EAASI,aAAaF,EAC1B,CAGAA,MAGJ3C,KAAK8C,sBAAsB9C,KAAKC,QAASW,EAAeE,GAExD,OAAOd,KAAKC,OAChB,CAMU8C,WACN,OAAO/C,KAAKC,QAAWD,KAAKC,QAAuBE,YAAY,SAAW,IAC9E,CAKUyC,aACN,GAAI5C,KAAKC,SAAWD,KAAKiB,SAAU,CAC/B,IAAKjB,KAAK4B,WAAY,CACjB5B,KAAKC,QAAuB+C,YAAY,MAC7C,KAAO,CACFhD,KAAKC,QAAuB+C,aAAahD,KAAKiB,SAASQ,IAAII,SAChE,CACJ,CACJ,EACH,IAAAoB,EAAA,CAAAC,WAAA,MAAAD,EAAA5D,mBAAA,OAAA4D,CAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CodeEditorPlugin.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","this","codeEditorRef","metadata","ui","rows","val","getProperty","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","schemaRows","useDialog","expandable","baseHeight","codeEditor","CodeEditor","id","generateStableId","generateBindingInfo","type","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","errorMessage","currentVal","detectedType","getType","setType","mainControl","expandBtn","Button","icon","tooltip","press","dlg","Dialog","title","label","contentWidth","contentHeight","verticalScrolling","resizable","content","beginButton","text","close","afterClose","destroy","control","addDependent","open","setLayoutData","FlexItemData","growFactor","HBox","alignItems","items","attachEventOnce","oBinding","getBinding","initLogic","applyState","attachChange","applyCommonDirectives","getValue","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CodeEditor from \"sap/ui/codeeditor/CodeEditor\";\nimport HBox from \"sap/m/HBox\";\nimport Button from \"sap/m/Button\";\nimport Dialog from \"sap/m/Dialog\";\nimport FlexItemData from \"sap/m/FlexItemData\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n private codeEditorRef?: CodeEditor;\n\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.codeEditorRef) return;\n \n // If a static height was requested via ui.rows, do not auto-adjust\n if (this.metadata?.ui?.rows) return;\n \n const val = this.codeEditorRef.getProperty('value') || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n this.codeEditorRef.setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CodeEditor control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n const schemaRows = fieldMetadata.ui?.rows;\n const useDialog = fieldMetadata.ui?.expandable !== false;\n const baseHeight = schemaRows ? (schemaRows * 18 + 20) + \"px\" : \"200px\"; // 200px is ~10 rows\n \n const codeEditor = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: baseHeight, // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = this.codeEditorRef!.getProperty('value');\n const detectedType = this.detectLanguage(currentVal);\n if (this.codeEditorRef!.getType() !== detectedType) {\n this.codeEditorRef!.setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n \n this.codeEditorRef = codeEditor;\n this.mainControl = codeEditor;\n\n if (useDialog) {\n const expandBtn = new Button({\n icon: \"sap-icon://full-screen\",\n type: \"Transparent\",\n tooltip: \"Expand Code Editor\",\n press: () => {\n const dlg = new Dialog({\n title: fieldMetadata.title || fieldMetadata.ui?.label || \"Edit Code\",\n contentWidth: \"80%\",\n contentHeight: \"80%\",\n verticalScrolling: false,\n resizable: true,\n content: new CodeEditor({\n value: this.generateBindingInfo(bindingPath, modelName),\n type: this.codeEditorRef!.getType(),\n width: \"100%\",\n height: \"100%\",\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly\n }),\n beginButton: new Button({\n text: \"Close\",\n press: () => dlg.close()\n }),\n afterClose: () => dlg.destroy()\n });\n this.control?.addDependent(dlg);\n dlg.open();\n }\n });\n\n codeEditor.setLayoutData(new FlexItemData({ growFactor: 1 }));\n\n this.control = new HBox({\n width: \"100%\",\n alignItems: \"Start\",\n items: [codeEditor, expandBtn]\n });\n } else {\n this.control = codeEditor;\n }\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n this.codeEditorRef.attachEventOnce(\"modelContextChange\", () => {\n const oBinding = this.codeEditorRef!.getBinding(\"value\");\n \n const initLogic = () => {\n if (this.codeEditorRef) {\n const currentVal = this.codeEditorRef.getProperty('value');\n if (!fieldMetadata.ui?.args) {\n this.codeEditorRef.setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n // CRITICAL: Ace Editor sometimes loses its constructor `editable` flag \n // when the model asynchronously injects a new value string. \n // We must forcefully re-apply the correct state after binding.\n this.applyState();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {unknown} The code value.\n */\n protected getValue(): unknown {\n return this.codeEditorRef ? this.codeEditorRef.getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.codeEditorRef && this.metadata) {\n if (!this.isEditable) {\n this.codeEditorRef.setEditable(false);\n } else {\n this.codeEditorRef.setEditable(!this.metadata.ui?.readOnly);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|