@qooxdoo/framework 7.9.2 → 8.0.0-beta.2
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/CHANGELOG.md +224 -33
- package/Manifest.json +3 -3
- package/bin/tools/utils.js +50 -13
- package/lib/compiler/compile-info.json +297 -227
- package/lib/compiler/index.js +55319 -47085
- package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +6 -7
- package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/cli/templates/class/singleton.tmpl.js +5 -6
- package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
- package/lib/resource/qx/tool/compiler/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -0
- package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
- package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
- package/lib/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
- package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/compile-1-0-0.json +21 -5
- package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
- package/lib/resource/qx/tool/website/build/404.html +22 -22
- package/lib/resource/qx/tool/website/build/about.html +23 -23
- package/lib/resource/qx/tool/website/build/assets/common.js +30 -18
- package/lib/resource/qx/tool/website/build/assets/custom.css +290 -0
- package/lib/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
- package/lib/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
- package/lib/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
- package/lib/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
- package/lib/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
- package/lib/resource/qx/tool/website/build/index.html +24 -24
- package/lib/resource/qx/tool/website/build/scripts/serve.js +63 -65
- package/lib/resource/qx/tool/website/partials/footer.html +8 -13
- package/lib/resource/qx/tool/website/partials/head.html +9 -7
- package/lib/resource/qx/tool/website/partials/header.html +3 -3
- package/lib/resource/qx/tool/website/src/assets/common.js +32 -0
- package/lib/resource/qx/tool/website/src/assets/custom.css +290 -0
- package/lib/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
- package/lib/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
- package/lib/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
- package/lib/resource/qx/tool/website/src/index.html +2 -2
- package/lib/resource/qx/tool/website/src/scripts/serve.js +63 -65
- package/package.json +23 -24
- package/source/boot/index.html +2 -2
- package/source/class/qx/Bootstrap.js +931 -705
- package/source/class/qx/Class.js +1476 -1451
- package/source/class/qx/Interface.js +40 -107
- package/source/class/qx/Mixin.js +58 -116
- package/source/class/qx/Promise.js +1 -0
- package/source/class/qx/Theme.js +1 -1
- package/source/class/qx/application/Routing.js +2 -0
- package/source/class/qx/bom/Font.js +3 -0
- package/source/class/qx/bom/client/Locale.js +5 -0
- package/source/class/qx/bom/request/Jsonp.js +5 -13
- package/source/class/qx/bom/request/Script.js +11 -35
- package/source/class/qx/bom/request/SimpleXhr.js +13 -41
- package/source/class/qx/bom/request/Xhr.js +19 -80
- package/source/class/qx/bom/storage/Memory.js +2 -0
- package/source/class/qx/bom/storage/UserData.js +2 -0
- package/source/class/qx/bom/storage/Web.js +2 -0
- package/source/class/qx/bom/webfonts/Validator.js +13 -5
- package/source/class/qx/core/Assert.js +14 -0
- package/source/class/qx/core/BaseInit.js +19 -19
- package/source/class/qx/core/Environment.js +23 -20
- package/source/class/qx/core/MEvent.js +1 -1
- package/source/class/qx/core/MObjectId.js +24 -6
- package/source/class/qx/core/MProperty.js +123 -115
- package/source/class/qx/core/Object.js +88 -102
- package/source/class/qx/core/check/AbstractCheck.js +111 -0
- package/source/class/qx/core/check/Any.js +63 -0
- package/source/class/qx/core/check/CheckFactory.js +151 -0
- package/source/class/qx/core/check/DynamicTypeCheck.js +94 -0
- package/source/class/qx/core/check/ICheck.js +75 -0
- package/source/class/qx/core/check/IsOneOfCheck.js +63 -0
- package/source/class/qx/core/check/JsDocCheck.js +71 -0
- package/source/class/qx/core/check/SimpleCheck.js +42 -0
- package/source/class/qx/core/check/standard/ArrayCheck.js +49 -0
- package/source/class/qx/core/check/standard/BooleanCheck.js +47 -0
- package/source/class/qx/core/check/standard/ClassCheck.js +33 -0
- package/source/class/qx/core/check/standard/ColorCheck.js +33 -0
- package/source/class/qx/core/check/standard/DateCheck.js +49 -0
- package/source/class/qx/core/check/standard/DecoratorCheck.js +33 -0
- package/source/class/qx/core/check/standard/DocumentCheck.js +40 -0
- package/source/class/qx/core/check/standard/ElementCheck.js +40 -0
- package/source/class/qx/core/check/standard/ErrorCheck.js +46 -0
- package/source/class/qx/core/check/standard/EventCheck.js +40 -0
- package/source/class/qx/core/check/standard/FontCheck.js +33 -0
- package/source/class/qx/core/check/standard/FunctionCheck.js +49 -0
- package/source/class/qx/core/check/standard/IntegerCheck.js +54 -0
- package/source/class/qx/core/check/standard/InterfaceCheck.js +33 -0
- package/source/class/qx/core/check/standard/MapCheck.js +33 -0
- package/source/class/qx/core/check/standard/MixinCheck.js +33 -0
- package/source/class/qx/core/check/standard/NodeCheck.js +40 -0
- package/source/class/qx/core/check/standard/NumberCheck.js +48 -0
- package/source/class/qx/core/check/standard/ObjectCheck.js +33 -0
- package/source/class/qx/core/check/standard/PositiveIntegerCheck.js +45 -0
- package/source/class/qx/core/check/standard/PositiveNumberCheck.js +45 -0
- package/source/class/qx/core/check/standard/PromiseCheck.js +33 -0
- package/source/class/qx/core/check/standard/RegExpCheck.js +46 -0
- package/source/class/qx/core/check/standard/StringCheck.js +43 -0
- package/source/class/qx/core/check/standard/ThemeCheck.js +33 -0
- package/source/class/qx/core/check/standard/WindowCheck.js +40 -0
- package/source/class/qx/core/property/ExplicitPropertyStorage.js +87 -0
- package/source/class/qx/core/property/GroupProperty.js +262 -0
- package/source/class/qx/core/property/IProperty.js +46 -0
- package/source/class/qx/core/property/IPropertyStorage.js +83 -0
- package/source/class/qx/core/property/ImmutableArrayStorage.js +38 -0
- package/source/class/qx/core/property/ImmutableDataArrayStorage.js +38 -0
- package/source/class/qx/core/property/ImmutableObjectStorage.js +39 -0
- package/source/class/qx/core/property/Property.js +1482 -0
- package/source/class/qx/core/property/PropertyStorageFactory.js +22 -0
- package/source/class/qx/core/property/SimplePropertyStorage.js +105 -0
- package/source/class/qx/data/Array.js +102 -57
- package/source/class/qx/data/MBinding.js +4 -29
- package/source/class/qx/data/SingleValueBinding.js +595 -1496
- package/source/class/qx/data/binding/AbstractSegment.js +197 -0
- package/source/class/qx/data/binding/ArrayIndexSegment.js +155 -0
- package/source/class/qx/data/binding/IInputReceiver.js +14 -0
- package/source/class/qx/data/binding/PropNameSegment.js +150 -0
- package/source/class/qx/data/controller/CheckedList.js +1 -1
- package/source/class/qx/data/controller/Form.js +78 -8
- package/source/class/qx/data/controller/Tree.js +27 -117
- package/source/class/qx/data/marshal/Json.js +46 -149
- package/source/class/qx/data/store/Json.js +0 -2
- package/source/class/qx/dev/Debug.js +1 -1
- package/source/class/qx/dev/LeakDetector.js +144 -0
- package/source/class/qx/dev/unit/AsyncWrapper.js +1 -0
- package/source/class/qx/dev/unit/MMock.js +7 -2
- package/source/class/qx/dev/unit/Sinon.js +0 -4
- package/source/class/qx/dev/unit/TestCase.js +4 -1
- package/source/class/qx/dev/unit/TestClass.js +2 -2
- package/source/class/qx/dev/unit/TestFunction.js +1 -0
- package/source/class/qx/dev/unit/TestLoaderBasic.js +1 -0
- package/source/class/qx/dev/unit/TestRunner.js +106 -0
- package/source/class/qx/event/IEventDispatcher.js +8 -4
- package/source/class/qx/event/Manager.js +4 -0
- package/source/class/qx/event/Messaging.js +2 -0
- package/source/class/qx/event/Pool.js +7 -0
- package/source/class/qx/event/Registration.js +33 -55
- package/source/class/qx/event/Timer.js +2 -0
- package/source/class/qx/event/Utils.js +25 -8
- package/source/class/qx/event/dispatch/AbstractBubbling.js +98 -194
- package/source/class/qx/event/dispatch/Direct.js +18 -13
- package/source/class/qx/event/handler/Appear.js +20 -24
- package/source/class/qx/event/handler/Application.js +4 -0
- package/source/class/qx/event/handler/DragDrop.js +182 -385
- package/source/class/qx/event/handler/Element.js +3 -0
- package/source/class/qx/event/handler/Focus.js +38 -31
- package/source/class/qx/event/handler/Input.js +5 -0
- package/source/class/qx/event/handler/Keyboard.js +107 -165
- package/source/class/qx/event/handler/Pointer.js +39 -68
- package/source/class/qx/event/handler/PointerCore.js +7 -25
- package/source/class/qx/event/handler/Window.js +5 -0
- package/source/class/qx/event/type/Event.js +12 -0
- package/source/class/qx/event/type/KeySequence.js +3 -0
- package/source/class/qx/event/type/Native.js +3 -0
- package/source/class/qx/html/Element.js +26 -91
- package/source/class/qx/html/Jsx.js +2 -3
- package/source/class/qx/html/Node.js +3 -3
- package/source/class/qx/io/jsonrpc/Client.js +2 -2
- package/source/class/qx/io/jsonrpc/protocol/Error.js +2 -2
- package/source/class/qx/io/jsonrpc/protocol/Parser.js +1 -0
- package/source/class/qx/io/jsonrpc/protocol/Result.js +2 -2
- package/source/class/qx/io/request/Xhr.js +3 -8
- package/source/class/qx/lang/normalize/Array.js +23 -1
- package/source/class/qx/locale/Date.js +520 -113
- package/source/class/qx/locale/LocalizedString.js +3 -0
- package/source/class/qx/locale/Manager.js +14 -3
- package/source/class/qx/locale/Number.js +60 -7
- package/source/class/qx/log/Logger.js +1 -1
- package/source/class/qx/module/Animation.js +2 -0
- package/source/class/qx/module/Attribute.js +2 -0
- package/source/class/qx/module/Css.js +7 -24
- package/source/class/qx/module/Event.js +2 -0
- package/source/class/qx/module/Manipulating.js +2 -0
- package/source/class/qx/module/Traversing.js +2 -0
- package/source/class/qx/promise/NativeWrapper.js +1 -1
- package/source/class/qx/test/Bootstrap.js +68 -53
- package/source/class/qx/test/Class.js +310 -2
- package/source/class/qx/test/Mixin.js +192 -42
- package/source/class/qx/test/Promise.js +129 -331
- package/source/class/qx/test/Theme.js +11 -0
- package/source/class/qx/test/bom/Font.js +2 -5
- package/source/class/qx/test/bom/Template.js +1 -1
- package/source/class/qx/test/compiler/ClassFile.js +14 -0
- package/source/class/qx/test/core/Assert.js +12 -0
- package/source/class/qx/test/core/Environment.js +17 -3
- package/source/class/qx/test/core/InheritanceDummy.js +10 -1
- package/source/class/qx/test/core/Object.js +51 -24
- package/source/class/qx/test/core/ObjectId.js +10 -1
- package/source/class/qx/test/core/Property.js +1363 -118
- package/source/class/qx/test/core/PropertyHelper.js +12 -0
- package/source/class/qx/test/core/Target.js +1 -0
- package/source/class/qx/test/core/Validation.js +2 -0
- package/source/class/qx/test/data/DataArray.js +218 -639
- package/source/class/qx/test/data/DataArrayWithChangeBubble.js +45 -215
- package/source/class/qx/test/data/MultiBinding.js +42 -0
- package/source/class/qx/test/data/async/__init__.js +4 -0
- package/source/class/qx/test/data/controller/Form.js +523 -14
- package/source/class/qx/test/data/controller/List.js +94 -426
- package/source/class/qx/test/data/controller/ListReverse.js +5 -20
- package/source/class/qx/test/data/controller/ListWithObjects.js +49 -225
- package/source/class/qx/test/data/controller/Object.js +54 -222
- package/source/class/qx/test/data/controller/Tree.js +195 -934
- package/source/class/qx/test/data/marshal/Json.js +74 -312
- package/source/class/qx/test/data/singlevalue/Array.js +55 -279
- package/source/class/qx/test/data/singlevalue/Async.js +173 -0
- package/source/class/qx/test/data/singlevalue/Deep.js +148 -327
- package/source/class/qx/test/data/singlevalue/Resolve.js +8 -28
- package/source/class/qx/test/data/singlevalue/Simple.js +130 -359
- package/source/class/qx/test/data/store/Json.js +86 -254
- package/source/class/qx/test/data/store/Jsonp.js +9 -29
- package/source/class/qx/test/data/store/Offline.js +2 -8
- package/source/class/qx/test/data/store/Rest.js +3 -3
- package/source/class/qx/test/dev/unit/Requirements.js +26 -10
- package/source/class/qx/test/event/GlobalError.js +2 -2
- package/source/class/qx/test/html/Iframe.js +1 -1
- package/source/class/qx/test/io/graphql/Client.js +2 -0
- package/source/class/qx/test/io/jsonrpc/Protocol.js +4 -2
- package/source/class/qx/test/io/request/MRequest.js +2 -8
- package/source/class/qx/test/io/request/Xhr.js +27 -117
- package/source/class/qx/test/lang/Function.js +6 -25
- package/source/class/qx/test/lang/Type.js +31 -13
- package/source/class/qx/test/locale/Date.js +173 -2
- package/source/class/qx/test/locale/Locale.js +23 -28
- package/source/class/qx/test/locale/Number.js +71 -0
- package/source/class/qx/test/log/Logger.js +7 -1
- package/source/class/qx/test/log/fixture/ClassA.js +2 -5
- package/source/class/qx/test/mobile/basic/Atom.js +3 -3
- package/source/class/qx/test/mobile/container/Scroll.js +4 -4
- package/source/class/qx/test/mobile/form/CheckBox.js +6 -12
- package/source/class/qx/test/performance/Property.js +5 -4
- package/source/class/qx/test/performance/widget/WidgetWithDecorator.js +2 -0
- package/source/class/qx/test/theme/Simple.js +34 -0
- package/source/class/qx/test/{MAppearance.js → theme/SimpleAppearance.js} +5 -4
- package/source/class/qx/test/{MDecoration.js → theme/SimpleDecoration.js} +6 -4
- package/source/class/qx/test/theme/manager/Meta.js +7 -5
- package/source/class/qx/test/tool/__init__.js +3 -0
- package/source/class/qx/test/tool/cli/AbstractValue.js +274 -0
- package/source/class/qx/test/tool/cli/Argument.js +384 -0
- package/source/class/qx/test/tool/cli/Command.js +387 -0
- package/source/class/qx/test/tool/cli/Flag.js +413 -0
- package/source/class/qx/test/tool/cli/__init__.js +3 -0
- package/source/class/qx/test/ui/LayoutTestCase.js +1 -14
- package/source/class/qx/test/ui/basic/Label.js +106 -0
- package/source/class/qx/test/ui/core/Blocker.js +125 -3
- package/source/class/qx/test/ui/form/Form.js +106 -0
- package/source/class/qx/test/ui/form/FormManager.js +6 -5
- package/source/class/qx/test/ui/form/SplitButton.js +1 -1
- package/source/class/qx/test/ui/toolbar/OverflowHandling.js +13 -14
- package/source/class/qx/test/ui/toolbar/ToolBar.js +16 -16
- package/source/class/qx/test/ui/tree/TreeFolder.js +5 -7
- package/source/class/qx/test/ui/tree/virtual/AbstractTreeTest.js +2 -0
- package/source/class/qx/test/ui/tree/virtual/Tree.js +36 -0
- package/source/class/qx/test/util/DateFormat.js +1 -1
- package/source/class/qx/test/util/PropertyUtil.js +0 -36
- package/source/class/qx/theme/classic/Appearance.js +22 -1
- package/source/class/qx/theme/indigo/ColorDark.js +2 -0
- package/source/class/qx/theme/manager/Font.js +6 -1
- package/source/class/qx/theme/manager/Meta.js +2 -1
- package/source/class/qx/theme/modern/Appearance.js +21 -0
- package/source/class/qx/theme/simple/Appearance.js +52 -95
- package/source/class/qx/theme/simple/Decoration.js +0 -1
- package/source/class/qx/theme/tangible/Appearance.js +3 -1
- package/source/class/qx/tool/cli/AbstractCliApp.js +88 -0
- package/source/class/qx/tool/cli/AbstractValue.js +186 -0
- package/source/class/qx/tool/cli/Argument.js +155 -0
- package/source/class/qx/tool/cli/Command.js +518 -0
- package/source/class/qx/tool/cli/Flag.js +202 -0
- package/source/class/qx/tool/cli/Parser.js +39 -0
- package/source/class/qx/tool/cli/__init__.js +26 -1
- package/source/class/qx/tool/compiler/Analyser.js +41 -13
- package/source/class/qx/tool/compiler/ClassFile.js +37 -13
- package/source/class/qx/tool/compiler/Console.js +2 -0
- package/source/class/qx/tool/compiler/MetaDatabase.js +47 -0
- package/source/class/qx/tool/compiler/MetaExtraction.js +53 -33
- package/source/class/qx/tool/compiler/app/Library.js +1 -1
- package/source/class/qx/tool/compiler/app/WebFont.js +2 -0
- package/source/class/qx/tool/compiler/cli/Application.js +58 -0
- package/source/class/qx/tool/{cli/commands → compiler/cli}/Command.js +99 -45
- package/source/class/qx/tool/{cli → compiler/cli}/ConfigDb.js +7 -7
- package/source/class/qx/tool/compiler/cli/ConfigLoader.js +272 -0
- package/source/class/qx/tool/{cli → compiler/cli}/LibraryApplication.js +3 -3
- package/source/class/qx/tool/compiler/cli/RootCommand.js +63 -0
- package/source/class/qx/tool/{cli → compiler/cli}/Watch.js +49 -24
- package/source/class/qx/tool/compiler/cli/__init__.js +3 -0
- package/source/class/qx/tool/{cli → compiler/cli}/api/AbstractApi.js +2 -11
- package/source/class/qx/tool/{cli → compiler/cli}/api/CompilerApi.js +11 -10
- package/source/class/qx/tool/{cli → compiler/cli}/api/LibraryApi.js +13 -4
- package/source/class/qx/tool/{cli → compiler/cli}/api/Test.js +1 -1
- package/source/class/qx/tool/compiler/cli/commands/Add.js +49 -0
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Clean.js +12 -25
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Compile.js +630 -590
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Config.js +22 -20
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Create.js +78 -55
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Deploy.js +45 -60
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Es6ify.js +57 -41
- package/source/class/qx/tool/{cli → compiler/cli}/commands/ExportGlyphs.js +26 -7
- package/source/class/qx/tool/compiler/cli/commands/Lint.js +420 -0
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Migrate.js +40 -20
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Package.js +20 -32
- package/source/class/qx/tool/compiler/cli/commands/Pkg.js +36 -0
- package/source/class/qx/tool/compiler/cli/commands/Prettier.js +278 -0
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Run.js +43 -39
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Serve.js +63 -61
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Test.js +49 -52
- package/source/class/qx/tool/{cli → compiler/cli}/commands/Typescript.js +70 -62
- package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Class.js +54 -31
- package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Script.js +57 -33
- package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Delete.js +19 -13
- package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Get.js +19 -13
- package/source/class/qx/tool/{cli → compiler/cli}/commands/config/List.js +20 -20
- package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Set.js +28 -20
- package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Install.js +140 -75
- package/source/class/qx/tool/{cli → compiler/cli}/commands/package/List.js +119 -80
- package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Publish.js +196 -179
- package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Remove.js +18 -21
- package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Update.js +92 -71
- package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Upgrade.js +67 -54
- package/source/class/qx/tool/compiler/makers/AbstractAppMaker.js +2 -1
- package/source/class/qx/tool/compiler/resources/Manager.js +2 -0
- package/source/class/qx/tool/compiler/resources/ScssConverter.js +1 -1
- package/source/class/qx/tool/compiler/resources/ScssFile.js +1 -1
- package/source/class/qx/tool/compiler/targets/Target.js +5 -10
- package/source/class/qx/tool/compiler/targets/TypeScriptWriter.js +9 -2
- package/source/class/qx/tool/compiler/targets/meta/ApplicationMeta.js +2 -4
- package/source/class/qx/tool/compiler/targets/meta/BootJs.js +2 -0
- package/source/class/qx/tool/compiler/targets/meta/Browserify.js +142 -80
- package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +2 -0
- package/source/class/qx/tool/config/Abstract.js +5 -5
- package/source/class/qx/tool/config/Lockfile.js +1 -1
- package/source/class/qx/tool/migration/BaseMigration.js +9 -7
- package/source/class/qx/tool/migration/M6_0_0.js +3 -3
- package/source/class/qx/tool/migration/M8_0_0.js +958 -0
- package/source/class/qx/tool/utils/Debounce.js +0 -1
- package/source/class/qx/tool/utils/Http.js +109 -21
- package/source/class/qx/tool/utils/LogManager.js +7 -0
- package/source/class/qx/tool/utils/Promisify.js +12 -1
- package/source/class/qx/tool/utils/QooxdooVersions.js +193 -0
- package/source/class/qx/tool/utils/Utils.js +8 -5
- package/source/class/qx/tool/utils/Website.js +9 -222
- package/source/class/qx/tool/utils/Zip.js +47 -0
- package/source/class/qx/tool/utils/files/Utils.js +3 -11
- package/source/class/qx/tool/utils/json/Tokenizer.js +5 -0
- package/source/class/qx/ui/basic/Atom.js +8 -8
- package/source/class/qx/ui/core/Blocker.js +17 -4
- package/source/class/qx/ui/core/DragDropCursor.js +2 -1
- package/source/class/qx/ui/core/EventHandler.js +13 -21
- package/source/class/qx/ui/core/LayoutItem.js +8 -31
- package/source/class/qx/ui/core/MExecutable.js +7 -31
- package/source/class/qx/ui/core/MNativeOverflow.js +4 -2
- package/source/class/qx/ui/core/Widget.js +50 -165
- package/source/class/qx/ui/core/scroll/IScrollBar.js +9 -3
- package/source/class/qx/ui/core/scroll/ScrollBar.js +7 -1
- package/source/class/qx/ui/core/scroll/ScrollPane.js +12 -4
- package/source/class/qx/ui/embed/Html.js +6 -2
- package/source/class/qx/ui/form/AbstractField.js +4 -12
- package/source/class/qx/ui/form/Button.js +6 -4
- package/source/class/qx/ui/form/CheckedSelectBox.js +8 -8
- package/source/class/qx/ui/form/FileSelectorButton.js +1 -1
- package/source/class/qx/ui/form/Form.js +3 -0
- package/source/class/qx/ui/form/IListItem.js +3 -1
- package/source/class/qx/ui/form/IRadioItem.js +3 -1
- package/source/class/qx/ui/form/MForm.js +3 -1
- package/source/class/qx/ui/form/Slider.js +6 -2
- package/source/class/qx/ui/form/SplitButton.js +5 -5
- package/source/class/qx/ui/form/TextField.js +1 -2
- package/source/class/qx/ui/form/validation/Manager.js +6 -2
- package/source/class/qx/ui/menubar/Button.js +1 -1
- package/source/class/qx/ui/mobile/basic/Atom.js +5 -5
- package/source/class/qx/ui/mobile/dialog/Menu.js +9 -31
- package/source/class/qx/ui/mobile/dialog/Popup.js +13 -1
- package/source/class/qx/ui/table/pane/FocusIndicator.js +5 -2
- package/source/class/qx/ui/table/pane/Scroller.js +5 -20
- package/source/class/qx/ui/table/selection/Model.js +1 -0
- package/source/class/qx/ui/toolbar/Button.js +1 -1
- package/source/class/qx/ui/toolbar/CheckBox.js +1 -1
- package/source/class/qx/ui/toolbar/FileSelectorButton.js +1 -2
- package/source/class/qx/ui/toolbar/Part.js +2 -2
- package/source/class/qx/ui/toolbar/PartContainer.js +2 -2
- package/source/class/qx/ui/toolbar/ToolBar.js +24 -49
- package/source/class/qx/ui/tree/VirtualTree.js +6 -4
- package/source/class/qx/ui/tree/core/AbstractItem.js +10 -17
- package/source/class/qx/ui/tree/core/IVirtualTree.js +4 -2
- package/source/class/qx/ui/tree/provider/IVirtualTreeProvider.js +20 -10
- package/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js +4 -1
- package/source/class/qx/ui/virtual/cell/Cell.js +20 -48
- package/source/class/qx/ui/virtual/cell/WidgetCell.js +2 -4
- package/source/class/qx/ui/virtual/core/Axis.js +4 -0
- package/source/class/qx/ui/virtual/core/ILayer.js +14 -10
- package/source/class/qx/ui/virtual/core/Scroller.js +4 -4
- package/source/class/qx/ui/virtual/layer/WidgetCell.js +4 -0
- package/source/class/qx/ui/virtual/selection/Abstract.js +3 -0
- package/source/class/qx/ui/virtual/selection/MModel.js +1 -1
- package/source/class/qx/ui/window/IDesktop.js +6 -2
- package/source/class/qx/ui/window/IWindowManager.js +10 -4
- package/source/class/qx/ui/window/MDesktop.js +2 -1
- package/source/class/qx/ui/window/Manager.js +1 -1
- package/source/class/qx/ui/window/Window.js +6 -4
- package/source/class/qx/util/OOUtil.js +8 -9
- package/source/class/qx/util/PropertyUtil.js +34 -154
- package/source/class/qx/util/ResponseParser.js +2 -0
- package/source/class/qx/util/Serializer.js +69 -114
- package/source/class/qx/util/format/DateFormat.js +3 -2
- package/source/global.d.ts +4 -0
- package/source/resource/qx/tool/bin/download-assets +0 -2
- package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +6 -7
- package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/cli/templates/class/singleton.tmpl.js +5 -6
- package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
- package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
- package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
- package/source/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
- package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/compile-1-0-0.json +21 -5
- package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
- package/source/resource/qx/tool/website/build/404.html +22 -22
- package/source/resource/qx/tool/website/build/about.html +23 -23
- package/source/resource/qx/tool/website/build/assets/common.js +30 -18
- package/source/resource/qx/tool/website/build/assets/custom.css +290 -0
- package/source/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
- package/source/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
- package/source/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
- package/source/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
- package/source/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
- package/source/resource/qx/tool/website/build/index.html +24 -24
- package/source/resource/qx/tool/website/build/scripts/serve.js +63 -65
- package/source/resource/qx/tool/website/partials/footer.html +8 -13
- package/source/resource/qx/tool/website/partials/head.html +9 -7
- package/source/resource/qx/tool/website/partials/header.html +3 -3
- package/source/resource/qx/tool/website/src/assets/common.js +32 -0
- package/source/resource/qx/tool/website/src/assets/custom.css +290 -0
- package/source/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
- package/source/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
- package/source/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
- package/source/resource/qx/tool/website/src/index.html +2 -2
- package/source/resource/qx/tool/website/src/scripts/serve.js +63 -65
- package/lib/resource/qx/tool/bin/build-devtools +0 -13
- package/lib/resource/qx/tool/bin/build-website +0 -15
- package/lib/resource/qx/tool/bin/download-assets +0 -23
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +0 -1
- package/lib/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
- package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
- package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
- package/lib/resource/qx/tool/website/build/assets/jquery.js +0 -5453
- package/lib/resource/qx/tool/website/build/qooxdoo.css +0 -21
- package/lib/resource/qx/tool/website/sass/qooxdoo.css +0 -3
- package/lib/resource/qx/tool/website/sass/qooxdoo.css.map +0 -1
- package/lib/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
- package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
- package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
- package/lib/resource/qx/tool/website/src/assets/jquery.js +0 -5453
- package/source/class/qx/core/Property.js +0 -2100
- package/source/class/qx/tool/cli/Application.js +0 -47
- package/source/class/qx/tool/cli/Cli.js +0 -713
- package/source/class/qx/tool/cli/commands/Add.js +0 -46
- package/source/class/qx/tool/cli/commands/Lint.js +0 -255
- package/source/class/qx/tool/cli/commands/Pkg.js +0 -56
- package/source/class/qx/tool/cli/commands/package/Migrate.js +0 -37
- package/source/class/qx/tool/compiler/app/Cldr.js +0 -725
- package/source/resource/qx/tool/bin/build-devtools +0 -13
- package/source/resource/qx/tool/bin/build-website +0 -15
- package/source/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
- package/source/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
- package/source/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
- package/source/resource/qx/tool/website/build/assets/jquery.js +0 -5453
- package/source/resource/qx/tool/website/build/qooxdoo.css +0 -21
- package/source/resource/qx/tool/website/sass/qooxdoo.scss +0 -31
- package/source/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
- package/source/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
- package/source/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
- package/source/resource/qx/tool/website/src/assets/jquery.js +0 -5453
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/css/custom.css +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
- /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
- /package/lib/resource/qx/tool/{loadsass.js → compiler/loadsass.js} +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/_styles.scss +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/custom.scss +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
- /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
- /package/source/resource/qx/tool/{loadsass.js → compiler/loadsass.js} +0 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/* ************************************************************************
|
|
2
|
+
|
|
3
|
+
qooxdoo - the new era of web development
|
|
4
|
+
|
|
5
|
+
http://qooxdoo.org
|
|
6
|
+
|
|
7
|
+
Copyright:
|
|
8
|
+
2022-2023 Zenesis Limited, https://www.zenesis.com
|
|
9
|
+
|
|
10
|
+
License:
|
|
11
|
+
MIT: https://opensource.org/licenses/MIT
|
|
12
|
+
See the LICENSE file in the project's top-level directory for details.
|
|
13
|
+
|
|
14
|
+
Authors:
|
|
15
|
+
* Patryk Malinowski (https://github.com/patryk-m-malinowski, pmalinowski116@gmail.com)
|
|
16
|
+
|
|
17
|
+
************************************************************************ */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Base class for segments in a data binding path.
|
|
21
|
+
* Each segment dereferences a part of the property chain, such as a property name or an array index.
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
qx.Class.define("qx.data.binding.AbstractSegment", {
|
|
25
|
+
type: "abstract",
|
|
26
|
+
extend: qx.core.Object,
|
|
27
|
+
implement: [qx.data.binding.IInputReceiver],
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param {qx.data.SingleValueBinding} binding The binding that this segment belongs to.
|
|
32
|
+
*/
|
|
33
|
+
construct(binding) {
|
|
34
|
+
super();
|
|
35
|
+
this.__binding = binding;
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
properties: {
|
|
39
|
+
/**
|
|
40
|
+
* Name of the event that this segment listens to on the input.
|
|
41
|
+
*/
|
|
42
|
+
eventName: {
|
|
43
|
+
init: null,
|
|
44
|
+
nullable: true,
|
|
45
|
+
check: "String",
|
|
46
|
+
event: "changeEventName"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Fired when this segment's input changed, and it has been received and fully processed by the next segments in the chain,
|
|
52
|
+
* i.e. any async set/get operations have completed.
|
|
53
|
+
*/
|
|
54
|
+
events: {
|
|
55
|
+
changeInput: "qx.event.type.Data"
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
members: {
|
|
59
|
+
/**
|
|
60
|
+
* @type {qx.data.SingleValueBinding}
|
|
61
|
+
*/
|
|
62
|
+
__binding: null,
|
|
63
|
+
/**
|
|
64
|
+
* @type {qx.core.Object}
|
|
65
|
+
*/
|
|
66
|
+
__input: undefined,
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @type {qx.data.binding.IInputReceiver}
|
|
70
|
+
*/
|
|
71
|
+
__outputReceiver: null,
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* @returns {qx.data.SingleValueBinding} the binding that this segment belongs to. Useful for debugging purposes.
|
|
76
|
+
*/
|
|
77
|
+
getBinding() {
|
|
78
|
+
return this.__binding;
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Sets the object which will receive the output of this segment after it's computed.
|
|
83
|
+
* This is either another segment or the Binding object.
|
|
84
|
+
*
|
|
85
|
+
* The last segment in the target path has no output receiver because we don't care what
|
|
86
|
+
* the output value is.
|
|
87
|
+
* @param {qx.data.binding.IInputReceiver} segment
|
|
88
|
+
*/
|
|
89
|
+
setOutputReceiver(segment) {
|
|
90
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
91
|
+
if (this.__outputReceiver) {
|
|
92
|
+
throw new Error("Output receiver already set");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this.__outputReceiver = segment;
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
*
|
|
100
|
+
* @returns {qx.data.binding.IInputReceiver} the object which is meant to receive the output of this segment
|
|
101
|
+
*/
|
|
102
|
+
getOutputReceiver() {
|
|
103
|
+
return this.__outputReceiver;
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @override
|
|
108
|
+
* @interface qx.data.binding.IInputReceiver
|
|
109
|
+
*
|
|
110
|
+
* Sets the input value for this segment.
|
|
111
|
+
* We will find the output value by dereferencing the input value with this segment (e.g. property name or array index),
|
|
112
|
+
* and then relay it to the output receiver, which is usually another segment or the instance of `qx.data.SingleValueBinding`.
|
|
113
|
+
*
|
|
114
|
+
* @param {qx.core.Object} value the input that we are dereferencing with the path or array index
|
|
115
|
+
* @returns {Promise?} If the operation is asynchronous, i.e. dereferencing a value at any part of the segment chain was asynchronous,
|
|
116
|
+
* or setting the target value was asynchronous, it will return a Promise which resolves when all the operations have completed.
|
|
117
|
+
* If it's synchronous, it returns null.
|
|
118
|
+
*/
|
|
119
|
+
setInput(value) {
|
|
120
|
+
if (value === this.__input) {
|
|
121
|
+
return null; // no change
|
|
122
|
+
}
|
|
123
|
+
let old = this.__input;
|
|
124
|
+
this.__input = value;
|
|
125
|
+
|
|
126
|
+
let out = this._applyInput(value, old);
|
|
127
|
+
if (qx.lang.Type.isPromise(out)) {
|
|
128
|
+
return out.then(() => this.fireDataEvent("changeInput", value, old));
|
|
129
|
+
} else {
|
|
130
|
+
return this.fireDataEvent("changeInput", value, old);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
*
|
|
136
|
+
* @returns {qx.core.Object} the input value that this segment is currently using
|
|
137
|
+
*/
|
|
138
|
+
getInput() {
|
|
139
|
+
return this.__input;
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @abstract
|
|
144
|
+
*
|
|
145
|
+
* This method is overridden in subclasses,
|
|
146
|
+
* and computes the output value based on the input,
|
|
147
|
+
* and adds listeners to changes to the desired property in the input value,
|
|
148
|
+
* and then relays the output value to the output receiver, which is usually another segment but can also be the binding object.
|
|
149
|
+
*
|
|
150
|
+
* @param {qx.core.Object} value
|
|
151
|
+
* @param {qx.core.Object} oldValue
|
|
152
|
+
* @returns {Promise?} If the operation is asynchronous (i.e. dereferencing a value at any part of the segment chain was asynchronous),
|
|
153
|
+
* or setting the target value was asynchronous, it will return a Promise which resolves when all the operations have completed.
|
|
154
|
+
* If it's synchronous, it returns null.
|
|
155
|
+
*/
|
|
156
|
+
_applyInput(value, oldValue) {},
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Called when the output value has been computed and needs to be set on the output receiver.
|
|
160
|
+
* @param {qx.core.Object | null | undefined} output The output to the next segment. Undefined if the input to this segment was nullish.
|
|
161
|
+
* Null if the input was not nullish but the output is null.
|
|
162
|
+
*
|
|
163
|
+
* @returns {Promise?} If the operation is asynchronous, i.e. dereferencing a value at any part of the segment chain was asynchronous,
|
|
164
|
+
* or setting the target value was asynchronous, it will return a Promise which resolves when all the operations have completed.
|
|
165
|
+
* If it's synchronous, it returns null.
|
|
166
|
+
*/
|
|
167
|
+
_setOutput(output) {
|
|
168
|
+
if (!this.__outputReceiver) {
|
|
169
|
+
throw new Error("No output receiver set");
|
|
170
|
+
}
|
|
171
|
+
return this.__outputReceiver.setInput(output);
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Computes the output value based on the input and calls _setOutput with that value.
|
|
176
|
+
* If this operation is asynchronous, it returns a Promise which resolves when the output property has been fully set.
|
|
177
|
+
* Otherwise, it returns null.
|
|
178
|
+
*
|
|
179
|
+
* @abstract
|
|
180
|
+
* @returns {Promise?}
|
|
181
|
+
*/
|
|
182
|
+
updateOutput() {
|
|
183
|
+
throw new Error(`${this.classname}.updateOutput not implemented`);
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Sets the property on the `input` object depicted by this segment to the given value.
|
|
188
|
+
* @abstract
|
|
189
|
+
* @param {* | null | undefined} value If undefined, this resets the target property. Otherwise, it sets the target property to the given value.
|
|
190
|
+
* @returns {Promise?} If the operation is asynchronous, returns a Promise which resolves when the value has been set.
|
|
191
|
+
* If it's synchronous, it returns null.
|
|
192
|
+
*/
|
|
193
|
+
setTargetValue(value) {
|
|
194
|
+
throw new Error(`${this.classname}.setTargetValue not implemented`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
});
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/* ************************************************************************
|
|
2
|
+
|
|
3
|
+
qooxdoo - the new era of web development
|
|
4
|
+
|
|
5
|
+
http://qooxdoo.org
|
|
6
|
+
|
|
7
|
+
Copyright:
|
|
8
|
+
2022-2023 Zenesis Limited, https://www.zenesis.com
|
|
9
|
+
|
|
10
|
+
License:
|
|
11
|
+
MIT: https://opensource.org/licenses/MIT
|
|
12
|
+
See the LICENSE file in the project's top-level directory for details.
|
|
13
|
+
|
|
14
|
+
Authors:
|
|
15
|
+
* Patryk Malinowski (https://github.com/patryk-m-malinowski, pmalinowski116@gmail.com)
|
|
16
|
+
|
|
17
|
+
************************************************************************ */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Binding Segment that handles array indexes; the path is expected to be `[index]`
|
|
21
|
+
*/
|
|
22
|
+
qx.Class.define("qx.data.binding.ArrayIndexSegment", {
|
|
23
|
+
extend: qx.data.binding.AbstractSegment,
|
|
24
|
+
/**
|
|
25
|
+
* @param {qx.data.SingleValueBinding} binding The binding that this segment belongs to.
|
|
26
|
+
* @param {string} segment String representation of the segment, such as `[0]` or `[last]`
|
|
27
|
+
*/
|
|
28
|
+
construct(binding, segment) {
|
|
29
|
+
super(binding);
|
|
30
|
+
this.__string = segment;
|
|
31
|
+
|
|
32
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
33
|
+
this.assertTrue(segment.startsWith("[") && segment.endsWith("]"), "Array index segment must start with [ and end with ]: " + segment);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
let index = segment.substring(1, segment.length - 1);
|
|
37
|
+
if (index === "last") {
|
|
38
|
+
index = -1; // special case for last item
|
|
39
|
+
} else {
|
|
40
|
+
index = parseInt(index);
|
|
41
|
+
if (isNaN(index)) {
|
|
42
|
+
throw new Error("Invalid array index in segment: " + segment);
|
|
43
|
+
}
|
|
44
|
+
if (index < 0) {
|
|
45
|
+
throw new Error("Array index must be >= 0, got: " + index);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
this.__index = index;
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
destruct() {
|
|
52
|
+
let input = this.getInput();
|
|
53
|
+
if (input) {
|
|
54
|
+
if (this.__isListData(this.getInput())) {
|
|
55
|
+
this.getInput().removeListener("change", this.__onChangeContents, this);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
members: {
|
|
61
|
+
/**
|
|
62
|
+
* @type {String} the string representation of this segment
|
|
63
|
+
*/
|
|
64
|
+
__string: null,
|
|
65
|
+
|
|
66
|
+
/** @type {Integer} the index into the array */
|
|
67
|
+
__index: null,
|
|
68
|
+
|
|
69
|
+
/**@override */
|
|
70
|
+
toString() {
|
|
71
|
+
return this.__string;
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
__isListData(input) {
|
|
75
|
+
return qx.Interface.objectImplements(input, qx.data.IListData);
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @override
|
|
80
|
+
*/
|
|
81
|
+
_applyInput(value, oldValue) {
|
|
82
|
+
if (oldValue) {
|
|
83
|
+
this.setEventName(null);
|
|
84
|
+
if (this.__isListData(oldValue)) {
|
|
85
|
+
oldValue.removeListener("change", this.__onChangeContents, this);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (value) {
|
|
90
|
+
if (this.__isListData(value)) {
|
|
91
|
+
value.addListener("change", this.__onChangeContents, this);
|
|
92
|
+
this.setEventName("change");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (this.getOutputReceiver()) {
|
|
96
|
+
return this.updateOutput();
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
/**@override */
|
|
101
|
+
updateOutput() {
|
|
102
|
+
return this._setOutput(this.__get());
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Computes the output value
|
|
107
|
+
* @returns {*}
|
|
108
|
+
*/
|
|
109
|
+
__get() {
|
|
110
|
+
let input = this.getInput();
|
|
111
|
+
if (!input) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (this.__isListData(input)) {
|
|
116
|
+
const len = input.getLength();
|
|
117
|
+
const idx = this.__index === -1 ? len - 1 : this.__index;
|
|
118
|
+
return idx >= len ? undefined : input.getItem(idx);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (this.__index >= input.length) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
return input.at(this.__index);
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @override
|
|
129
|
+
*/
|
|
130
|
+
setTargetValue(targetValue) {
|
|
131
|
+
let input = this.getInput();
|
|
132
|
+
if (!input) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (this.__isListData(input)) {
|
|
136
|
+
const idx = this.__index === -1 ? input.getLength() - 1 : this.__index;
|
|
137
|
+
input.setItem(idx, targetValue);
|
|
138
|
+
} else {
|
|
139
|
+
const idx = this.__index === -1 ? input.length - 1 : this.__index;
|
|
140
|
+
input[idx] = targetValue;
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Event handler for when the contents of the array changes
|
|
146
|
+
*
|
|
147
|
+
* @param {qx.event.type.Data} evt
|
|
148
|
+
*/
|
|
149
|
+
__onChangeContents(evt) {
|
|
150
|
+
if (this.getOutputReceiver()) {
|
|
151
|
+
this.updateOutput();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for objects that can receive the output from a binding path segment.
|
|
3
|
+
*/
|
|
4
|
+
qx.Interface.define("qx.data.binding.IInputReceiver", {
|
|
5
|
+
members: {
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {*} value
|
|
9
|
+
* @returns {Promise?} If the operation is asynchronous, it should return a Promise which resolves when it has completed.
|
|
10
|
+
* If it's synchronous, it should return null.
|
|
11
|
+
*/
|
|
12
|
+
setInput(input) {}
|
|
13
|
+
}
|
|
14
|
+
});
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/* ************************************************************************
|
|
2
|
+
|
|
3
|
+
qooxdoo - the new era of web development
|
|
4
|
+
|
|
5
|
+
http://qooxdoo.org
|
|
6
|
+
|
|
7
|
+
Copyright:
|
|
8
|
+
2022-2023 Zenesis Limited, https://www.zenesis.com
|
|
9
|
+
|
|
10
|
+
License:
|
|
11
|
+
MIT: https://opensource.org/licenses/MIT
|
|
12
|
+
See the LICENSE file in the project's top-level directory for details.
|
|
13
|
+
|
|
14
|
+
Authors:
|
|
15
|
+
* Patryk Malinowski (https://github.com/patryk-m-malinowski, pmalinowski116@gmail.com)
|
|
16
|
+
|
|
17
|
+
************************************************************************ */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Segment that represents a property name in a binding path.
|
|
21
|
+
*/
|
|
22
|
+
qx.Class.define("qx.data.binding.PropNameSegment", {
|
|
23
|
+
extend: qx.data.binding.AbstractSegment,
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @param {qx.data.SingleValueBinding} binding The binding that this segment belongs to.
|
|
27
|
+
* @param {String} propName
|
|
28
|
+
*/
|
|
29
|
+
construct(binding, propName) {
|
|
30
|
+
super(binding);
|
|
31
|
+
let lower = qx.lang.String.firstLow(propName);
|
|
32
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
33
|
+
if (lower !== propName) {
|
|
34
|
+
this.warn(`Binding: property name "${propName}" should be lower case, using "${lower}" instead`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
this.__propName = lower;
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Destructor
|
|
42
|
+
*/
|
|
43
|
+
destruct() {
|
|
44
|
+
let input = this.getInput();
|
|
45
|
+
if (input) {
|
|
46
|
+
let eventName = this.__getEventName(input);
|
|
47
|
+
eventName && input.removeListener(eventName, this.__onChangeInputProperty, this);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
members: {
|
|
52
|
+
/** @type {String} the property name for this segment */
|
|
53
|
+
__propName: null,
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @returns {String} the property name for this segment
|
|
58
|
+
*/
|
|
59
|
+
getPropName() {
|
|
60
|
+
return this.__propName;
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
/**@override */
|
|
64
|
+
toString() {
|
|
65
|
+
return this.__propName;
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Apply for `input`
|
|
70
|
+
*/
|
|
71
|
+
_applyInput(value, oldValue) {
|
|
72
|
+
if (oldValue) {
|
|
73
|
+
let eventName = this.__getEventName(oldValue);
|
|
74
|
+
eventName && oldValue.removeListener(eventName, this.__onChangeInputProperty, this);
|
|
75
|
+
this.setEventName(null);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (value) {
|
|
79
|
+
let eventName = this.__getEventName(value);
|
|
80
|
+
eventName && value.addListener(eventName, this.__onChangeInputProperty, this);
|
|
81
|
+
this.setEventName(eventName);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (this.getOutputReceiver()) {
|
|
85
|
+
return this.updateOutput();
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
updateOutput() {
|
|
90
|
+
let input = this.getInput();
|
|
91
|
+
if (input === null || input === undefined) {
|
|
92
|
+
return this._setOutput(undefined);
|
|
93
|
+
} else {
|
|
94
|
+
let property = qx.Class.getByProperty(input.constructor, this.__propName);
|
|
95
|
+
if (property === null) {
|
|
96
|
+
return this._setOutput(null);
|
|
97
|
+
}
|
|
98
|
+
if (!property.isAsync() || property.isInitialized(input)) {
|
|
99
|
+
let nextInput = property.get(input, this.__propName);
|
|
100
|
+
return this._setOutput(nextInput);
|
|
101
|
+
} else {
|
|
102
|
+
let promise = property.getAsync(input);
|
|
103
|
+
return promise.then(nextInput => this._setOutput(nextInput));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @override
|
|
110
|
+
*/
|
|
111
|
+
setTargetValue(targetValue) {
|
|
112
|
+
if (this.getInput() == null || this.getInput() === undefined) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (targetValue !== undefined) {
|
|
116
|
+
return qx.data.SingleValueBinding.set(this.getInput(), this.__propName, targetValue);
|
|
117
|
+
} else {
|
|
118
|
+
return qx.data.SingleValueBinding.reset(this.getInput(), this.__propName);
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Event handler for when the input property changes
|
|
124
|
+
*
|
|
125
|
+
* @param {qx.event.type.Data} evt
|
|
126
|
+
*/
|
|
127
|
+
__onChangeInputProperty(evt) {
|
|
128
|
+
if (this.getOutputReceiver()) {
|
|
129
|
+
return this._setOutput(evt.getData());
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
*
|
|
135
|
+
* @param {*} input
|
|
136
|
+
* @returns {string}
|
|
137
|
+
*/
|
|
138
|
+
__getEventName(input) {
|
|
139
|
+
let property = qx.Class.getByProperty(input.constructor, this.__propName);
|
|
140
|
+
if (property) {
|
|
141
|
+
return property.getEventName();
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (qx.Class.supportsEvent(input.constructor, this.__propName)) {
|
|
145
|
+
return this.__propName;
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* is the complete array of items that can be selected, and that array is used to populate
|
|
25
25
|
* the UI widget (ie as normal).
|
|
26
26
|
*
|
|
27
|
-
* The `checked`
|
|
27
|
+
* The `checked` pseudo property in this `CheckedList` controller relates to the checked
|
|
28
28
|
* property of the UI widget.
|
|
29
29
|
*/
|
|
30
30
|
qx.Class.define("qx.data.controller.CheckedList", {
|
|
@@ -96,6 +96,28 @@ qx.Class.define("qx.data.controller.Form", {
|
|
|
96
96
|
__objectController: null,
|
|
97
97
|
__bindingOptions: null,
|
|
98
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Helper method to convert a form item name to camelCase for model property names.
|
|
101
|
+
* This ensures v8 compatibility where property names follow camelCase conventions.
|
|
102
|
+
* For deep binding (names with dots), each part is converted separately.
|
|
103
|
+
*
|
|
104
|
+
* @param name {String} The form item name (may contain dots for deep binding)
|
|
105
|
+
* @return {String} The camelCase converted name
|
|
106
|
+
*/
|
|
107
|
+
__convertNameToCamelCase(name) {
|
|
108
|
+
if (!name) {
|
|
109
|
+
return name;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// For deep binding, split by dot and convert each part
|
|
113
|
+
var parts = name.split(".");
|
|
114
|
+
var convertedParts = parts.map(function (part) {
|
|
115
|
+
return qx.lang.String.firstLow(part);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
return convertedParts.join(".");
|
|
119
|
+
},
|
|
120
|
+
|
|
99
121
|
/**
|
|
100
122
|
* The form controller uses for setting up the bindings the fundamental
|
|
101
123
|
* binding layer, the {@link qx.data.SingleValueBinding}. To achieve a
|
|
@@ -125,13 +147,16 @@ qx.Class.define("qx.data.controller.Form", {
|
|
|
125
147
|
? "modelSelection[0]"
|
|
126
148
|
: "value";
|
|
127
149
|
|
|
150
|
+
// Convert to camelCase for v8 compatibility (issue #10808)
|
|
151
|
+
var modelPropertyName = this.__convertNameToCamelCase(name);
|
|
152
|
+
|
|
128
153
|
// remove the binding
|
|
129
|
-
this.__objectController.removeTarget(item, targetProperty,
|
|
154
|
+
this.__objectController.removeTarget(item, targetProperty, modelPropertyName);
|
|
130
155
|
// set up the new binding with the options
|
|
131
156
|
this.__objectController.addTarget(
|
|
132
157
|
item,
|
|
133
158
|
targetProperty,
|
|
134
|
-
|
|
159
|
+
modelPropertyName,
|
|
135
160
|
!this._selfUpdate,
|
|
136
161
|
model2target,
|
|
137
162
|
target2model
|
|
@@ -158,8 +183,35 @@ qx.Class.define("qx.data.controller.Form", {
|
|
|
158
183
|
|
|
159
184
|
var items = target.getItems();
|
|
160
185
|
var data = {};
|
|
186
|
+
var nameMapping = {}; // For collision detection (issue #10808)
|
|
187
|
+
|
|
161
188
|
for (var name in items) {
|
|
162
|
-
|
|
189
|
+
// Convert to camelCase for v8 compatibility (issue #10808)
|
|
190
|
+
// v8's binding system automatically converts property names to lowercase
|
|
191
|
+
var camelCaseName = this.__convertNameToCamelCase(name);
|
|
192
|
+
|
|
193
|
+
// COLLISION DETECTION: Detect if multiple fields map to same camelCase name
|
|
194
|
+
// Example: "Username" and "username" both map to "username"
|
|
195
|
+
if (nameMapping[camelCaseName] && nameMapping[camelCaseName] !== name) {
|
|
196
|
+
throw new Error(
|
|
197
|
+
"Form field naming collision detected (issue #10808): " +
|
|
198
|
+
"Fields '" + nameMapping[camelCaseName] + "' and '" + name + "' " +
|
|
199
|
+
"both convert to the same camelCase property name '" + camelCaseName + "'.\n\n" +
|
|
200
|
+
"This happens when field names differ only in capitalization.\n" +
|
|
201
|
+
"qooxdoo v8's binding system automatically converts property names to lowercase first letter,\n" +
|
|
202
|
+
"which causes both field names to map to the same model property.\n\n" +
|
|
203
|
+
"To fix this issue:\n" +
|
|
204
|
+
" 1. Rename one of the conflicting fields to have a distinct name\n" +
|
|
205
|
+
" 2. Ensure all field names are unique when converted to camelCase\n\n" +
|
|
206
|
+
"Conflicting fields:\n" +
|
|
207
|
+
" - '" + nameMapping[camelCaseName] + "'\n" +
|
|
208
|
+
" - '" + name + "'\n" +
|
|
209
|
+
"Both map to model property: '" + camelCaseName + "'"
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
nameMapping[camelCaseName] = name;
|
|
213
|
+
|
|
214
|
+
var names = camelCaseName.split(".");
|
|
163
215
|
var currentData = data;
|
|
164
216
|
for (var i = 0; i < names.length; i++) {
|
|
165
217
|
// if its the last item
|
|
@@ -218,11 +270,14 @@ qx.Class.define("qx.data.controller.Form", {
|
|
|
218
270
|
var options = this.__bindingOptions[name];
|
|
219
271
|
options = options && this.__bindingOptions[name][1];
|
|
220
272
|
|
|
273
|
+
// Convert to camelCase for v8 compatibility (issue #10808)
|
|
274
|
+
var modelPropertyName = this.__convertNameToCamelCase(name);
|
|
275
|
+
|
|
221
276
|
qx.data.SingleValueBinding.updateTarget(
|
|
222
277
|
item,
|
|
223
278
|
sourceProperty,
|
|
224
279
|
this.getModel(),
|
|
225
|
-
|
|
280
|
+
modelPropertyName,
|
|
226
281
|
options
|
|
227
282
|
);
|
|
228
283
|
}
|
|
@@ -261,7 +316,13 @@ qx.Class.define("qx.data.controller.Form", {
|
|
|
261
316
|
var targetProperty = this.__isModelSelectable(item)
|
|
262
317
|
? "modelSelection[0]"
|
|
263
318
|
: "value";
|
|
264
|
-
|
|
319
|
+
// Convert to camelCase for v8 compatibility (issue #10808)
|
|
320
|
+
var modelPropertyName = this.__convertNameToCamelCase(name);
|
|
321
|
+
this.__objectController.removeTarget(
|
|
322
|
+
item,
|
|
323
|
+
targetProperty,
|
|
324
|
+
modelPropertyName
|
|
325
|
+
);
|
|
265
326
|
}
|
|
266
327
|
}
|
|
267
328
|
|
|
@@ -309,20 +370,23 @@ qx.Class.define("qx.data.controller.Form", {
|
|
|
309
370
|
: "value";
|
|
310
371
|
var options = this.__bindingOptions[name];
|
|
311
372
|
|
|
373
|
+
// Convert to camelCase for v8 compatibility (issue #10808)
|
|
374
|
+
var modelPropertyName = this.__convertNameToCamelCase(name);
|
|
375
|
+
|
|
312
376
|
// try to bind all given items in the form
|
|
313
377
|
try {
|
|
314
378
|
if (options == null) {
|
|
315
379
|
this.__objectController.addTarget(
|
|
316
380
|
item,
|
|
317
381
|
targetProperty,
|
|
318
|
-
|
|
382
|
+
modelPropertyName,
|
|
319
383
|
!this._selfUpdate
|
|
320
384
|
);
|
|
321
385
|
} else {
|
|
322
386
|
this.__objectController.addTarget(
|
|
323
387
|
item,
|
|
324
388
|
targetProperty,
|
|
325
|
-
|
|
389
|
+
modelPropertyName,
|
|
326
390
|
!this._selfUpdate,
|
|
327
391
|
options[0],
|
|
328
392
|
options[1]
|
|
@@ -367,7 +431,13 @@ qx.Class.define("qx.data.controller.Form", {
|
|
|
367
431
|
var targetProperty = this.__isModelSelectable(item)
|
|
368
432
|
? "modelSelection[0]"
|
|
369
433
|
: "value";
|
|
370
|
-
|
|
434
|
+
// Convert to camelCase for v8 compatibility (issue #10808)
|
|
435
|
+
var modelPropertyName = this.__convertNameToCamelCase(name);
|
|
436
|
+
this.__objectController.removeTarget(
|
|
437
|
+
item,
|
|
438
|
+
targetProperty,
|
|
439
|
+
modelPropertyName
|
|
440
|
+
);
|
|
371
441
|
}
|
|
372
442
|
},
|
|
373
443
|
|