@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.
Files changed (600) hide show
  1. package/CHANGELOG.md +224 -33
  2. package/Manifest.json +3 -3
  3. package/bin/tools/utils.js +50 -13
  4. package/lib/compiler/compile-info.json +297 -227
  5. package/lib/compiler/index.js +55319 -47085
  6. package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +6 -7
  7. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/cli/templates/class/singleton.tmpl.js +5 -6
  8. package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
  9. package/lib/resource/qx/tool/compiler/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -0
  10. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
  11. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
  12. package/lib/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
  13. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/compile-1-0-0.json +21 -5
  14. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
  15. package/lib/resource/qx/tool/website/build/404.html +22 -22
  16. package/lib/resource/qx/tool/website/build/about.html +23 -23
  17. package/lib/resource/qx/tool/website/build/assets/common.js +30 -18
  18. package/lib/resource/qx/tool/website/build/assets/custom.css +290 -0
  19. package/lib/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
  20. package/lib/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
  21. package/lib/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
  22. package/lib/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
  23. package/lib/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
  24. package/lib/resource/qx/tool/website/build/index.html +24 -24
  25. package/lib/resource/qx/tool/website/build/scripts/serve.js +63 -65
  26. package/lib/resource/qx/tool/website/partials/footer.html +8 -13
  27. package/lib/resource/qx/tool/website/partials/head.html +9 -7
  28. package/lib/resource/qx/tool/website/partials/header.html +3 -3
  29. package/lib/resource/qx/tool/website/src/assets/common.js +32 -0
  30. package/lib/resource/qx/tool/website/src/assets/custom.css +290 -0
  31. package/lib/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
  32. package/lib/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
  33. package/lib/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
  34. package/lib/resource/qx/tool/website/src/index.html +2 -2
  35. package/lib/resource/qx/tool/website/src/scripts/serve.js +63 -65
  36. package/package.json +23 -24
  37. package/source/boot/index.html +2 -2
  38. package/source/class/qx/Bootstrap.js +931 -705
  39. package/source/class/qx/Class.js +1476 -1451
  40. package/source/class/qx/Interface.js +40 -107
  41. package/source/class/qx/Mixin.js +58 -116
  42. package/source/class/qx/Promise.js +1 -0
  43. package/source/class/qx/Theme.js +1 -1
  44. package/source/class/qx/application/Routing.js +2 -0
  45. package/source/class/qx/bom/Font.js +3 -0
  46. package/source/class/qx/bom/client/Locale.js +5 -0
  47. package/source/class/qx/bom/request/Jsonp.js +5 -13
  48. package/source/class/qx/bom/request/Script.js +11 -35
  49. package/source/class/qx/bom/request/SimpleXhr.js +13 -41
  50. package/source/class/qx/bom/request/Xhr.js +19 -80
  51. package/source/class/qx/bom/storage/Memory.js +2 -0
  52. package/source/class/qx/bom/storage/UserData.js +2 -0
  53. package/source/class/qx/bom/storage/Web.js +2 -0
  54. package/source/class/qx/bom/webfonts/Validator.js +13 -5
  55. package/source/class/qx/core/Assert.js +14 -0
  56. package/source/class/qx/core/BaseInit.js +19 -19
  57. package/source/class/qx/core/Environment.js +23 -20
  58. package/source/class/qx/core/MEvent.js +1 -1
  59. package/source/class/qx/core/MObjectId.js +24 -6
  60. package/source/class/qx/core/MProperty.js +123 -115
  61. package/source/class/qx/core/Object.js +88 -102
  62. package/source/class/qx/core/check/AbstractCheck.js +111 -0
  63. package/source/class/qx/core/check/Any.js +63 -0
  64. package/source/class/qx/core/check/CheckFactory.js +151 -0
  65. package/source/class/qx/core/check/DynamicTypeCheck.js +94 -0
  66. package/source/class/qx/core/check/ICheck.js +75 -0
  67. package/source/class/qx/core/check/IsOneOfCheck.js +63 -0
  68. package/source/class/qx/core/check/JsDocCheck.js +71 -0
  69. package/source/class/qx/core/check/SimpleCheck.js +42 -0
  70. package/source/class/qx/core/check/standard/ArrayCheck.js +49 -0
  71. package/source/class/qx/core/check/standard/BooleanCheck.js +47 -0
  72. package/source/class/qx/core/check/standard/ClassCheck.js +33 -0
  73. package/source/class/qx/core/check/standard/ColorCheck.js +33 -0
  74. package/source/class/qx/core/check/standard/DateCheck.js +49 -0
  75. package/source/class/qx/core/check/standard/DecoratorCheck.js +33 -0
  76. package/source/class/qx/core/check/standard/DocumentCheck.js +40 -0
  77. package/source/class/qx/core/check/standard/ElementCheck.js +40 -0
  78. package/source/class/qx/core/check/standard/ErrorCheck.js +46 -0
  79. package/source/class/qx/core/check/standard/EventCheck.js +40 -0
  80. package/source/class/qx/core/check/standard/FontCheck.js +33 -0
  81. package/source/class/qx/core/check/standard/FunctionCheck.js +49 -0
  82. package/source/class/qx/core/check/standard/IntegerCheck.js +54 -0
  83. package/source/class/qx/core/check/standard/InterfaceCheck.js +33 -0
  84. package/source/class/qx/core/check/standard/MapCheck.js +33 -0
  85. package/source/class/qx/core/check/standard/MixinCheck.js +33 -0
  86. package/source/class/qx/core/check/standard/NodeCheck.js +40 -0
  87. package/source/class/qx/core/check/standard/NumberCheck.js +48 -0
  88. package/source/class/qx/core/check/standard/ObjectCheck.js +33 -0
  89. package/source/class/qx/core/check/standard/PositiveIntegerCheck.js +45 -0
  90. package/source/class/qx/core/check/standard/PositiveNumberCheck.js +45 -0
  91. package/source/class/qx/core/check/standard/PromiseCheck.js +33 -0
  92. package/source/class/qx/core/check/standard/RegExpCheck.js +46 -0
  93. package/source/class/qx/core/check/standard/StringCheck.js +43 -0
  94. package/source/class/qx/core/check/standard/ThemeCheck.js +33 -0
  95. package/source/class/qx/core/check/standard/WindowCheck.js +40 -0
  96. package/source/class/qx/core/property/ExplicitPropertyStorage.js +87 -0
  97. package/source/class/qx/core/property/GroupProperty.js +262 -0
  98. package/source/class/qx/core/property/IProperty.js +46 -0
  99. package/source/class/qx/core/property/IPropertyStorage.js +83 -0
  100. package/source/class/qx/core/property/ImmutableArrayStorage.js +38 -0
  101. package/source/class/qx/core/property/ImmutableDataArrayStorage.js +38 -0
  102. package/source/class/qx/core/property/ImmutableObjectStorage.js +39 -0
  103. package/source/class/qx/core/property/Property.js +1482 -0
  104. package/source/class/qx/core/property/PropertyStorageFactory.js +22 -0
  105. package/source/class/qx/core/property/SimplePropertyStorage.js +105 -0
  106. package/source/class/qx/data/Array.js +102 -57
  107. package/source/class/qx/data/MBinding.js +4 -29
  108. package/source/class/qx/data/SingleValueBinding.js +595 -1496
  109. package/source/class/qx/data/binding/AbstractSegment.js +197 -0
  110. package/source/class/qx/data/binding/ArrayIndexSegment.js +155 -0
  111. package/source/class/qx/data/binding/IInputReceiver.js +14 -0
  112. package/source/class/qx/data/binding/PropNameSegment.js +150 -0
  113. package/source/class/qx/data/controller/CheckedList.js +1 -1
  114. package/source/class/qx/data/controller/Form.js +78 -8
  115. package/source/class/qx/data/controller/Tree.js +27 -117
  116. package/source/class/qx/data/marshal/Json.js +46 -149
  117. package/source/class/qx/data/store/Json.js +0 -2
  118. package/source/class/qx/dev/Debug.js +1 -1
  119. package/source/class/qx/dev/LeakDetector.js +144 -0
  120. package/source/class/qx/dev/unit/AsyncWrapper.js +1 -0
  121. package/source/class/qx/dev/unit/MMock.js +7 -2
  122. package/source/class/qx/dev/unit/Sinon.js +0 -4
  123. package/source/class/qx/dev/unit/TestCase.js +4 -1
  124. package/source/class/qx/dev/unit/TestClass.js +2 -2
  125. package/source/class/qx/dev/unit/TestFunction.js +1 -0
  126. package/source/class/qx/dev/unit/TestLoaderBasic.js +1 -0
  127. package/source/class/qx/dev/unit/TestRunner.js +106 -0
  128. package/source/class/qx/event/IEventDispatcher.js +8 -4
  129. package/source/class/qx/event/Manager.js +4 -0
  130. package/source/class/qx/event/Messaging.js +2 -0
  131. package/source/class/qx/event/Pool.js +7 -0
  132. package/source/class/qx/event/Registration.js +33 -55
  133. package/source/class/qx/event/Timer.js +2 -0
  134. package/source/class/qx/event/Utils.js +25 -8
  135. package/source/class/qx/event/dispatch/AbstractBubbling.js +98 -194
  136. package/source/class/qx/event/dispatch/Direct.js +18 -13
  137. package/source/class/qx/event/handler/Appear.js +20 -24
  138. package/source/class/qx/event/handler/Application.js +4 -0
  139. package/source/class/qx/event/handler/DragDrop.js +182 -385
  140. package/source/class/qx/event/handler/Element.js +3 -0
  141. package/source/class/qx/event/handler/Focus.js +38 -31
  142. package/source/class/qx/event/handler/Input.js +5 -0
  143. package/source/class/qx/event/handler/Keyboard.js +107 -165
  144. package/source/class/qx/event/handler/Pointer.js +39 -68
  145. package/source/class/qx/event/handler/PointerCore.js +7 -25
  146. package/source/class/qx/event/handler/Window.js +5 -0
  147. package/source/class/qx/event/type/Event.js +12 -0
  148. package/source/class/qx/event/type/KeySequence.js +3 -0
  149. package/source/class/qx/event/type/Native.js +3 -0
  150. package/source/class/qx/html/Element.js +26 -91
  151. package/source/class/qx/html/Jsx.js +2 -3
  152. package/source/class/qx/html/Node.js +3 -3
  153. package/source/class/qx/io/jsonrpc/Client.js +2 -2
  154. package/source/class/qx/io/jsonrpc/protocol/Error.js +2 -2
  155. package/source/class/qx/io/jsonrpc/protocol/Parser.js +1 -0
  156. package/source/class/qx/io/jsonrpc/protocol/Result.js +2 -2
  157. package/source/class/qx/io/request/Xhr.js +3 -8
  158. package/source/class/qx/lang/normalize/Array.js +23 -1
  159. package/source/class/qx/locale/Date.js +520 -113
  160. package/source/class/qx/locale/LocalizedString.js +3 -0
  161. package/source/class/qx/locale/Manager.js +14 -3
  162. package/source/class/qx/locale/Number.js +60 -7
  163. package/source/class/qx/log/Logger.js +1 -1
  164. package/source/class/qx/module/Animation.js +2 -0
  165. package/source/class/qx/module/Attribute.js +2 -0
  166. package/source/class/qx/module/Css.js +7 -24
  167. package/source/class/qx/module/Event.js +2 -0
  168. package/source/class/qx/module/Manipulating.js +2 -0
  169. package/source/class/qx/module/Traversing.js +2 -0
  170. package/source/class/qx/promise/NativeWrapper.js +1 -1
  171. package/source/class/qx/test/Bootstrap.js +68 -53
  172. package/source/class/qx/test/Class.js +310 -2
  173. package/source/class/qx/test/Mixin.js +192 -42
  174. package/source/class/qx/test/Promise.js +129 -331
  175. package/source/class/qx/test/Theme.js +11 -0
  176. package/source/class/qx/test/bom/Font.js +2 -5
  177. package/source/class/qx/test/bom/Template.js +1 -1
  178. package/source/class/qx/test/compiler/ClassFile.js +14 -0
  179. package/source/class/qx/test/core/Assert.js +12 -0
  180. package/source/class/qx/test/core/Environment.js +17 -3
  181. package/source/class/qx/test/core/InheritanceDummy.js +10 -1
  182. package/source/class/qx/test/core/Object.js +51 -24
  183. package/source/class/qx/test/core/ObjectId.js +10 -1
  184. package/source/class/qx/test/core/Property.js +1363 -118
  185. package/source/class/qx/test/core/PropertyHelper.js +12 -0
  186. package/source/class/qx/test/core/Target.js +1 -0
  187. package/source/class/qx/test/core/Validation.js +2 -0
  188. package/source/class/qx/test/data/DataArray.js +218 -639
  189. package/source/class/qx/test/data/DataArrayWithChangeBubble.js +45 -215
  190. package/source/class/qx/test/data/MultiBinding.js +42 -0
  191. package/source/class/qx/test/data/async/__init__.js +4 -0
  192. package/source/class/qx/test/data/controller/Form.js +523 -14
  193. package/source/class/qx/test/data/controller/List.js +94 -426
  194. package/source/class/qx/test/data/controller/ListReverse.js +5 -20
  195. package/source/class/qx/test/data/controller/ListWithObjects.js +49 -225
  196. package/source/class/qx/test/data/controller/Object.js +54 -222
  197. package/source/class/qx/test/data/controller/Tree.js +195 -934
  198. package/source/class/qx/test/data/marshal/Json.js +74 -312
  199. package/source/class/qx/test/data/singlevalue/Array.js +55 -279
  200. package/source/class/qx/test/data/singlevalue/Async.js +173 -0
  201. package/source/class/qx/test/data/singlevalue/Deep.js +148 -327
  202. package/source/class/qx/test/data/singlevalue/Resolve.js +8 -28
  203. package/source/class/qx/test/data/singlevalue/Simple.js +130 -359
  204. package/source/class/qx/test/data/store/Json.js +86 -254
  205. package/source/class/qx/test/data/store/Jsonp.js +9 -29
  206. package/source/class/qx/test/data/store/Offline.js +2 -8
  207. package/source/class/qx/test/data/store/Rest.js +3 -3
  208. package/source/class/qx/test/dev/unit/Requirements.js +26 -10
  209. package/source/class/qx/test/event/GlobalError.js +2 -2
  210. package/source/class/qx/test/html/Iframe.js +1 -1
  211. package/source/class/qx/test/io/graphql/Client.js +2 -0
  212. package/source/class/qx/test/io/jsonrpc/Protocol.js +4 -2
  213. package/source/class/qx/test/io/request/MRequest.js +2 -8
  214. package/source/class/qx/test/io/request/Xhr.js +27 -117
  215. package/source/class/qx/test/lang/Function.js +6 -25
  216. package/source/class/qx/test/lang/Type.js +31 -13
  217. package/source/class/qx/test/locale/Date.js +173 -2
  218. package/source/class/qx/test/locale/Locale.js +23 -28
  219. package/source/class/qx/test/locale/Number.js +71 -0
  220. package/source/class/qx/test/log/Logger.js +7 -1
  221. package/source/class/qx/test/log/fixture/ClassA.js +2 -5
  222. package/source/class/qx/test/mobile/basic/Atom.js +3 -3
  223. package/source/class/qx/test/mobile/container/Scroll.js +4 -4
  224. package/source/class/qx/test/mobile/form/CheckBox.js +6 -12
  225. package/source/class/qx/test/performance/Property.js +5 -4
  226. package/source/class/qx/test/performance/widget/WidgetWithDecorator.js +2 -0
  227. package/source/class/qx/test/theme/Simple.js +34 -0
  228. package/source/class/qx/test/{MAppearance.js → theme/SimpleAppearance.js} +5 -4
  229. package/source/class/qx/test/{MDecoration.js → theme/SimpleDecoration.js} +6 -4
  230. package/source/class/qx/test/theme/manager/Meta.js +7 -5
  231. package/source/class/qx/test/tool/__init__.js +3 -0
  232. package/source/class/qx/test/tool/cli/AbstractValue.js +274 -0
  233. package/source/class/qx/test/tool/cli/Argument.js +384 -0
  234. package/source/class/qx/test/tool/cli/Command.js +387 -0
  235. package/source/class/qx/test/tool/cli/Flag.js +413 -0
  236. package/source/class/qx/test/tool/cli/__init__.js +3 -0
  237. package/source/class/qx/test/ui/LayoutTestCase.js +1 -14
  238. package/source/class/qx/test/ui/basic/Label.js +106 -0
  239. package/source/class/qx/test/ui/core/Blocker.js +125 -3
  240. package/source/class/qx/test/ui/form/Form.js +106 -0
  241. package/source/class/qx/test/ui/form/FormManager.js +6 -5
  242. package/source/class/qx/test/ui/form/SplitButton.js +1 -1
  243. package/source/class/qx/test/ui/toolbar/OverflowHandling.js +13 -14
  244. package/source/class/qx/test/ui/toolbar/ToolBar.js +16 -16
  245. package/source/class/qx/test/ui/tree/TreeFolder.js +5 -7
  246. package/source/class/qx/test/ui/tree/virtual/AbstractTreeTest.js +2 -0
  247. package/source/class/qx/test/ui/tree/virtual/Tree.js +36 -0
  248. package/source/class/qx/test/util/DateFormat.js +1 -1
  249. package/source/class/qx/test/util/PropertyUtil.js +0 -36
  250. package/source/class/qx/theme/classic/Appearance.js +22 -1
  251. package/source/class/qx/theme/indigo/ColorDark.js +2 -0
  252. package/source/class/qx/theme/manager/Font.js +6 -1
  253. package/source/class/qx/theme/manager/Meta.js +2 -1
  254. package/source/class/qx/theme/modern/Appearance.js +21 -0
  255. package/source/class/qx/theme/simple/Appearance.js +52 -95
  256. package/source/class/qx/theme/simple/Decoration.js +0 -1
  257. package/source/class/qx/theme/tangible/Appearance.js +3 -1
  258. package/source/class/qx/tool/cli/AbstractCliApp.js +88 -0
  259. package/source/class/qx/tool/cli/AbstractValue.js +186 -0
  260. package/source/class/qx/tool/cli/Argument.js +155 -0
  261. package/source/class/qx/tool/cli/Command.js +518 -0
  262. package/source/class/qx/tool/cli/Flag.js +202 -0
  263. package/source/class/qx/tool/cli/Parser.js +39 -0
  264. package/source/class/qx/tool/cli/__init__.js +26 -1
  265. package/source/class/qx/tool/compiler/Analyser.js +41 -13
  266. package/source/class/qx/tool/compiler/ClassFile.js +37 -13
  267. package/source/class/qx/tool/compiler/Console.js +2 -0
  268. package/source/class/qx/tool/compiler/MetaDatabase.js +47 -0
  269. package/source/class/qx/tool/compiler/MetaExtraction.js +53 -33
  270. package/source/class/qx/tool/compiler/app/Library.js +1 -1
  271. package/source/class/qx/tool/compiler/app/WebFont.js +2 -0
  272. package/source/class/qx/tool/compiler/cli/Application.js +58 -0
  273. package/source/class/qx/tool/{cli/commands → compiler/cli}/Command.js +99 -45
  274. package/source/class/qx/tool/{cli → compiler/cli}/ConfigDb.js +7 -7
  275. package/source/class/qx/tool/compiler/cli/ConfigLoader.js +272 -0
  276. package/source/class/qx/tool/{cli → compiler/cli}/LibraryApplication.js +3 -3
  277. package/source/class/qx/tool/compiler/cli/RootCommand.js +63 -0
  278. package/source/class/qx/tool/{cli → compiler/cli}/Watch.js +49 -24
  279. package/source/class/qx/tool/compiler/cli/__init__.js +3 -0
  280. package/source/class/qx/tool/{cli → compiler/cli}/api/AbstractApi.js +2 -11
  281. package/source/class/qx/tool/{cli → compiler/cli}/api/CompilerApi.js +11 -10
  282. package/source/class/qx/tool/{cli → compiler/cli}/api/LibraryApi.js +13 -4
  283. package/source/class/qx/tool/{cli → compiler/cli}/api/Test.js +1 -1
  284. package/source/class/qx/tool/compiler/cli/commands/Add.js +49 -0
  285. package/source/class/qx/tool/{cli → compiler/cli}/commands/Clean.js +12 -25
  286. package/source/class/qx/tool/{cli → compiler/cli}/commands/Compile.js +630 -590
  287. package/source/class/qx/tool/{cli → compiler/cli}/commands/Config.js +22 -20
  288. package/source/class/qx/tool/{cli → compiler/cli}/commands/Create.js +78 -55
  289. package/source/class/qx/tool/{cli → compiler/cli}/commands/Deploy.js +45 -60
  290. package/source/class/qx/tool/{cli → compiler/cli}/commands/Es6ify.js +57 -41
  291. package/source/class/qx/tool/{cli → compiler/cli}/commands/ExportGlyphs.js +26 -7
  292. package/source/class/qx/tool/compiler/cli/commands/Lint.js +420 -0
  293. package/source/class/qx/tool/{cli → compiler/cli}/commands/Migrate.js +40 -20
  294. package/source/class/qx/tool/{cli → compiler/cli}/commands/Package.js +20 -32
  295. package/source/class/qx/tool/compiler/cli/commands/Pkg.js +36 -0
  296. package/source/class/qx/tool/compiler/cli/commands/Prettier.js +278 -0
  297. package/source/class/qx/tool/{cli → compiler/cli}/commands/Run.js +43 -39
  298. package/source/class/qx/tool/{cli → compiler/cli}/commands/Serve.js +63 -61
  299. package/source/class/qx/tool/{cli → compiler/cli}/commands/Test.js +49 -52
  300. package/source/class/qx/tool/{cli → compiler/cli}/commands/Typescript.js +70 -62
  301. package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Class.js +54 -31
  302. package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Script.js +57 -33
  303. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Delete.js +19 -13
  304. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Get.js +19 -13
  305. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/List.js +20 -20
  306. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Set.js +28 -20
  307. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Install.js +140 -75
  308. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/List.js +119 -80
  309. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Publish.js +196 -179
  310. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Remove.js +18 -21
  311. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Update.js +92 -71
  312. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Upgrade.js +67 -54
  313. package/source/class/qx/tool/compiler/makers/AbstractAppMaker.js +2 -1
  314. package/source/class/qx/tool/compiler/resources/Manager.js +2 -0
  315. package/source/class/qx/tool/compiler/resources/ScssConverter.js +1 -1
  316. package/source/class/qx/tool/compiler/resources/ScssFile.js +1 -1
  317. package/source/class/qx/tool/compiler/targets/Target.js +5 -10
  318. package/source/class/qx/tool/compiler/targets/TypeScriptWriter.js +9 -2
  319. package/source/class/qx/tool/compiler/targets/meta/ApplicationMeta.js +2 -4
  320. package/source/class/qx/tool/compiler/targets/meta/BootJs.js +2 -0
  321. package/source/class/qx/tool/compiler/targets/meta/Browserify.js +142 -80
  322. package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +2 -0
  323. package/source/class/qx/tool/config/Abstract.js +5 -5
  324. package/source/class/qx/tool/config/Lockfile.js +1 -1
  325. package/source/class/qx/tool/migration/BaseMigration.js +9 -7
  326. package/source/class/qx/tool/migration/M6_0_0.js +3 -3
  327. package/source/class/qx/tool/migration/M8_0_0.js +958 -0
  328. package/source/class/qx/tool/utils/Debounce.js +0 -1
  329. package/source/class/qx/tool/utils/Http.js +109 -21
  330. package/source/class/qx/tool/utils/LogManager.js +7 -0
  331. package/source/class/qx/tool/utils/Promisify.js +12 -1
  332. package/source/class/qx/tool/utils/QooxdooVersions.js +193 -0
  333. package/source/class/qx/tool/utils/Utils.js +8 -5
  334. package/source/class/qx/tool/utils/Website.js +9 -222
  335. package/source/class/qx/tool/utils/Zip.js +47 -0
  336. package/source/class/qx/tool/utils/files/Utils.js +3 -11
  337. package/source/class/qx/tool/utils/json/Tokenizer.js +5 -0
  338. package/source/class/qx/ui/basic/Atom.js +8 -8
  339. package/source/class/qx/ui/core/Blocker.js +17 -4
  340. package/source/class/qx/ui/core/DragDropCursor.js +2 -1
  341. package/source/class/qx/ui/core/EventHandler.js +13 -21
  342. package/source/class/qx/ui/core/LayoutItem.js +8 -31
  343. package/source/class/qx/ui/core/MExecutable.js +7 -31
  344. package/source/class/qx/ui/core/MNativeOverflow.js +4 -2
  345. package/source/class/qx/ui/core/Widget.js +50 -165
  346. package/source/class/qx/ui/core/scroll/IScrollBar.js +9 -3
  347. package/source/class/qx/ui/core/scroll/ScrollBar.js +7 -1
  348. package/source/class/qx/ui/core/scroll/ScrollPane.js +12 -4
  349. package/source/class/qx/ui/embed/Html.js +6 -2
  350. package/source/class/qx/ui/form/AbstractField.js +4 -12
  351. package/source/class/qx/ui/form/Button.js +6 -4
  352. package/source/class/qx/ui/form/CheckedSelectBox.js +8 -8
  353. package/source/class/qx/ui/form/FileSelectorButton.js +1 -1
  354. package/source/class/qx/ui/form/Form.js +3 -0
  355. package/source/class/qx/ui/form/IListItem.js +3 -1
  356. package/source/class/qx/ui/form/IRadioItem.js +3 -1
  357. package/source/class/qx/ui/form/MForm.js +3 -1
  358. package/source/class/qx/ui/form/Slider.js +6 -2
  359. package/source/class/qx/ui/form/SplitButton.js +5 -5
  360. package/source/class/qx/ui/form/TextField.js +1 -2
  361. package/source/class/qx/ui/form/validation/Manager.js +6 -2
  362. package/source/class/qx/ui/menubar/Button.js +1 -1
  363. package/source/class/qx/ui/mobile/basic/Atom.js +5 -5
  364. package/source/class/qx/ui/mobile/dialog/Menu.js +9 -31
  365. package/source/class/qx/ui/mobile/dialog/Popup.js +13 -1
  366. package/source/class/qx/ui/table/pane/FocusIndicator.js +5 -2
  367. package/source/class/qx/ui/table/pane/Scroller.js +5 -20
  368. package/source/class/qx/ui/table/selection/Model.js +1 -0
  369. package/source/class/qx/ui/toolbar/Button.js +1 -1
  370. package/source/class/qx/ui/toolbar/CheckBox.js +1 -1
  371. package/source/class/qx/ui/toolbar/FileSelectorButton.js +1 -2
  372. package/source/class/qx/ui/toolbar/Part.js +2 -2
  373. package/source/class/qx/ui/toolbar/PartContainer.js +2 -2
  374. package/source/class/qx/ui/toolbar/ToolBar.js +24 -49
  375. package/source/class/qx/ui/tree/VirtualTree.js +6 -4
  376. package/source/class/qx/ui/tree/core/AbstractItem.js +10 -17
  377. package/source/class/qx/ui/tree/core/IVirtualTree.js +4 -2
  378. package/source/class/qx/ui/tree/provider/IVirtualTreeProvider.js +20 -10
  379. package/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js +4 -1
  380. package/source/class/qx/ui/virtual/cell/Cell.js +20 -48
  381. package/source/class/qx/ui/virtual/cell/WidgetCell.js +2 -4
  382. package/source/class/qx/ui/virtual/core/Axis.js +4 -0
  383. package/source/class/qx/ui/virtual/core/ILayer.js +14 -10
  384. package/source/class/qx/ui/virtual/core/Scroller.js +4 -4
  385. package/source/class/qx/ui/virtual/layer/WidgetCell.js +4 -0
  386. package/source/class/qx/ui/virtual/selection/Abstract.js +3 -0
  387. package/source/class/qx/ui/virtual/selection/MModel.js +1 -1
  388. package/source/class/qx/ui/window/IDesktop.js +6 -2
  389. package/source/class/qx/ui/window/IWindowManager.js +10 -4
  390. package/source/class/qx/ui/window/MDesktop.js +2 -1
  391. package/source/class/qx/ui/window/Manager.js +1 -1
  392. package/source/class/qx/ui/window/Window.js +6 -4
  393. package/source/class/qx/util/OOUtil.js +8 -9
  394. package/source/class/qx/util/PropertyUtil.js +34 -154
  395. package/source/class/qx/util/ResponseParser.js +2 -0
  396. package/source/class/qx/util/Serializer.js +69 -114
  397. package/source/class/qx/util/format/DateFormat.js +3 -2
  398. package/source/global.d.ts +4 -0
  399. package/source/resource/qx/tool/bin/download-assets +0 -2
  400. package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +6 -7
  401. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/cli/templates/class/singleton.tmpl.js +5 -6
  402. package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
  403. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
  404. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
  405. package/source/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
  406. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/compile-1-0-0.json +21 -5
  407. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
  408. package/source/resource/qx/tool/website/build/404.html +22 -22
  409. package/source/resource/qx/tool/website/build/about.html +23 -23
  410. package/source/resource/qx/tool/website/build/assets/common.js +30 -18
  411. package/source/resource/qx/tool/website/build/assets/custom.css +290 -0
  412. package/source/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
  413. package/source/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
  414. package/source/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
  415. package/source/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
  416. package/source/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
  417. package/source/resource/qx/tool/website/build/index.html +24 -24
  418. package/source/resource/qx/tool/website/build/scripts/serve.js +63 -65
  419. package/source/resource/qx/tool/website/partials/footer.html +8 -13
  420. package/source/resource/qx/tool/website/partials/head.html +9 -7
  421. package/source/resource/qx/tool/website/partials/header.html +3 -3
  422. package/source/resource/qx/tool/website/src/assets/common.js +32 -0
  423. package/source/resource/qx/tool/website/src/assets/custom.css +290 -0
  424. package/source/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
  425. package/source/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
  426. package/source/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
  427. package/source/resource/qx/tool/website/src/index.html +2 -2
  428. package/source/resource/qx/tool/website/src/scripts/serve.js +63 -65
  429. package/lib/resource/qx/tool/bin/build-devtools +0 -13
  430. package/lib/resource/qx/tool/bin/build-website +0 -15
  431. package/lib/resource/qx/tool/bin/download-assets +0 -23
  432. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +0 -1
  433. package/lib/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
  434. package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
  435. package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
  436. package/lib/resource/qx/tool/website/build/assets/jquery.js +0 -5453
  437. package/lib/resource/qx/tool/website/build/qooxdoo.css +0 -21
  438. package/lib/resource/qx/tool/website/sass/qooxdoo.css +0 -3
  439. package/lib/resource/qx/tool/website/sass/qooxdoo.css.map +0 -1
  440. package/lib/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
  441. package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
  442. package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
  443. package/lib/resource/qx/tool/website/src/assets/jquery.js +0 -5453
  444. package/source/class/qx/core/Property.js +0 -2100
  445. package/source/class/qx/tool/cli/Application.js +0 -47
  446. package/source/class/qx/tool/cli/Cli.js +0 -713
  447. package/source/class/qx/tool/cli/commands/Add.js +0 -46
  448. package/source/class/qx/tool/cli/commands/Lint.js +0 -255
  449. package/source/class/qx/tool/cli/commands/Pkg.js +0 -56
  450. package/source/class/qx/tool/cli/commands/package/Migrate.js +0 -37
  451. package/source/class/qx/tool/compiler/app/Cldr.js +0 -725
  452. package/source/resource/qx/tool/bin/build-devtools +0 -13
  453. package/source/resource/qx/tool/bin/build-website +0 -15
  454. package/source/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
  455. package/source/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
  456. package/source/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
  457. package/source/resource/qx/tool/website/build/assets/jquery.js +0 -5453
  458. package/source/resource/qx/tool/website/build/qooxdoo.css +0 -21
  459. package/source/resource/qx/tool/website/sass/qooxdoo.scss +0 -31
  460. package/source/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
  461. package/source/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
  462. package/source/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
  463. package/source/resource/qx/tool/website/src/assets/jquery.js +0 -5453
  464. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
  465. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
  466. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
  467. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
  468. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
  469. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
  470. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
  471. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
  472. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
  473. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
  474. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
  475. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
  476. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
  477. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
  478. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
  479. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
  480. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
  481. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
  482. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
  483. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
  484. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
  485. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
  486. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
  487. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
  488. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
  489. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
  490. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
  491. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
  492. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
  493. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
  494. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
  495. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
  496. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
  497. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
  498. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
  499. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
  500. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
  501. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
  502. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
  503. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
  504. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/css/custom.css +0 -0
  505. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
  506. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
  507. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
  508. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
  509. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
  510. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
  511. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
  512. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
  513. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
  514. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
  515. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
  516. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
  517. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
  518. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
  519. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
  520. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
  521. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
  522. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
  523. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
  524. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
  525. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
  526. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
  527. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
  528. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
  529. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
  530. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
  531. /package/lib/resource/qx/tool/{loadsass.js → compiler/loadsass.js} +0 -0
  532. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
  533. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
  534. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
  535. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
  536. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
  537. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
  538. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
  539. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
  540. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
  541. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
  542. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
  543. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
  544. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
  545. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
  546. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
  547. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
  548. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
  549. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
  550. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
  551. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
  552. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
  553. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
  554. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
  555. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
  556. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
  557. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
  558. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
  559. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
  560. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
  561. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
  562. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
  563. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
  564. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
  565. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
  566. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
  567. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
  568. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
  569. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
  570. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
  571. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
  572. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/_styles.scss +0 -0
  573. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/custom.scss +0 -0
  574. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
  575. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
  576. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
  577. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
  578. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
  579. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
  580. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
  581. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
  582. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
  583. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
  584. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
  585. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
  586. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
  587. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
  588. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
  589. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
  590. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
  591. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
  592. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
  593. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
  594. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
  595. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
  596. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
  597. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
  598. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
  599. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
  600. /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` psuedo property in this `CheckedList` controller relates to 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, name);
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
- name,
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
- var names = name.split(".");
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
- name,
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
- this.__objectController.removeTarget(item, targetProperty, name);
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
- name,
382
+ modelPropertyName,
319
383
  !this._selfUpdate
320
384
  );
321
385
  } else {
322
386
  this.__objectController.addTarget(
323
387
  item,
324
388
  targetProperty,
325
- name,
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
- this.__objectController.removeTarget(item, targetProperty, name);
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