@qooxdoo/framework 7.9.2 → 8.0.0-beta.1

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 (593) hide show
  1. package/CHANGELOG.md +191 -33
  2. package/Manifest.json +3 -3
  3. package/bin/tools/utils.js +50 -13
  4. package/lib/compiler/compile-info.json +300 -230
  5. package/lib/compiler/index.js +56748 -44036
  6. package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
  7. package/lib/resource/qx/tool/compiler/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -0
  8. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
  9. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
  10. package/lib/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
  11. package/lib/resource/qx/tool/{schema → compiler/schema}/compile-1-0-0.json +15 -3
  12. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
  13. package/lib/resource/qx/tool/website/build/404.html +22 -22
  14. package/lib/resource/qx/tool/website/build/about.html +23 -23
  15. package/lib/resource/qx/tool/website/build/assets/common.js +30 -18
  16. package/lib/resource/qx/tool/website/build/assets/custom.css +290 -0
  17. package/lib/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
  18. package/lib/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
  19. package/lib/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
  20. package/lib/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
  21. package/lib/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
  22. package/lib/resource/qx/tool/website/build/index.html +24 -24
  23. package/lib/resource/qx/tool/website/build/scripts/serve.js +63 -65
  24. package/lib/resource/qx/tool/website/partials/footer.html +8 -13
  25. package/lib/resource/qx/tool/website/partials/head.html +9 -7
  26. package/lib/resource/qx/tool/website/partials/header.html +3 -3
  27. package/lib/resource/qx/tool/website/src/assets/common.js +32 -0
  28. package/lib/resource/qx/tool/website/src/assets/custom.css +290 -0
  29. package/lib/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
  30. package/lib/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
  31. package/lib/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
  32. package/lib/resource/qx/tool/website/src/index.html +2 -2
  33. package/lib/resource/qx/tool/website/src/scripts/serve.js +63 -65
  34. package/package.json +20 -19
  35. package/source/boot/index.html +2 -2
  36. package/source/class/qx/Bootstrap.js +931 -705
  37. package/source/class/qx/Class.js +1476 -1451
  38. package/source/class/qx/Interface.js +40 -107
  39. package/source/class/qx/Mixin.js +58 -116
  40. package/source/class/qx/Promise.js +1 -0
  41. package/source/class/qx/Theme.js +1 -1
  42. package/source/class/qx/application/Routing.js +2 -0
  43. package/source/class/qx/bom/Font.js +3 -0
  44. package/source/class/qx/bom/client/Locale.js +5 -0
  45. package/source/class/qx/bom/request/Jsonp.js +5 -13
  46. package/source/class/qx/bom/request/Script.js +11 -35
  47. package/source/class/qx/bom/request/SimpleXhr.js +13 -41
  48. package/source/class/qx/bom/request/Xhr.js +19 -80
  49. package/source/class/qx/bom/storage/Memory.js +2 -0
  50. package/source/class/qx/bom/storage/UserData.js +2 -0
  51. package/source/class/qx/bom/storage/Web.js +2 -0
  52. package/source/class/qx/bom/webfonts/Validator.js +13 -5
  53. package/source/class/qx/core/Assert.js +14 -0
  54. package/source/class/qx/core/BaseInit.js +19 -20
  55. package/source/class/qx/core/Environment.js +23 -20
  56. package/source/class/qx/core/MEvent.js +1 -1
  57. package/source/class/qx/core/MObjectId.js +8 -6
  58. package/source/class/qx/core/MProperty.js +172 -136
  59. package/source/class/qx/core/Object.js +88 -102
  60. package/source/class/qx/core/check/AbstractCheck.js +111 -0
  61. package/source/class/qx/core/check/Any.js +63 -0
  62. package/source/class/qx/core/check/CheckFactory.js +151 -0
  63. package/source/class/qx/core/check/DynamicTypeCheck.js +90 -0
  64. package/source/class/qx/core/check/ICheck.js +75 -0
  65. package/source/class/qx/core/check/IsOneOfCheck.js +63 -0
  66. package/source/class/qx/core/check/JsDocCheck.js +71 -0
  67. package/source/class/qx/core/check/SimpleCheck.js +42 -0
  68. package/source/class/qx/core/check/standard/ArrayCheck.js +49 -0
  69. package/source/class/qx/core/check/standard/BooleanCheck.js +47 -0
  70. package/source/class/qx/core/check/standard/ClassCheck.js +33 -0
  71. package/source/class/qx/core/check/standard/ColorCheck.js +33 -0
  72. package/source/class/qx/core/check/standard/DateCheck.js +49 -0
  73. package/source/class/qx/core/check/standard/DecoratorCheck.js +33 -0
  74. package/source/class/qx/core/check/standard/DocumentCheck.js +40 -0
  75. package/source/class/qx/core/check/standard/ElementCheck.js +40 -0
  76. package/source/class/qx/core/check/standard/ErrorCheck.js +46 -0
  77. package/source/class/qx/core/check/standard/EventCheck.js +40 -0
  78. package/source/class/qx/core/check/standard/FontCheck.js +33 -0
  79. package/source/class/qx/core/check/standard/FunctionCheck.js +49 -0
  80. package/source/class/qx/core/check/standard/IntegerCheck.js +54 -0
  81. package/source/class/qx/core/check/standard/InterfaceCheck.js +33 -0
  82. package/source/class/qx/core/check/standard/MapCheck.js +33 -0
  83. package/source/class/qx/core/check/standard/MixinCheck.js +33 -0
  84. package/source/class/qx/core/check/standard/NodeCheck.js +40 -0
  85. package/source/class/qx/core/check/standard/NumberCheck.js +48 -0
  86. package/source/class/qx/core/check/standard/ObjectCheck.js +33 -0
  87. package/source/class/qx/core/check/standard/PositiveIntegerCheck.js +45 -0
  88. package/source/class/qx/core/check/standard/PositiveNumberCheck.js +45 -0
  89. package/source/class/qx/core/check/standard/PromiseCheck.js +33 -0
  90. package/source/class/qx/core/check/standard/RegExpCheck.js +46 -0
  91. package/source/class/qx/core/check/standard/StringCheck.js +43 -0
  92. package/source/class/qx/core/check/standard/ThemeCheck.js +33 -0
  93. package/source/class/qx/core/check/standard/WindowCheck.js +40 -0
  94. package/source/class/qx/core/property/ExplicitPropertyStorage.js +87 -0
  95. package/source/class/qx/core/property/GroupProperty.js +262 -0
  96. package/source/class/qx/core/property/IProperty.js +46 -0
  97. package/source/class/qx/core/property/IPropertyStorage.js +83 -0
  98. package/source/class/qx/core/property/ImmutableArrayStorage.js +38 -0
  99. package/source/class/qx/core/property/ImmutableDataArrayStorage.js +38 -0
  100. package/source/class/qx/core/property/ImmutableObjectStorage.js +39 -0
  101. package/source/class/qx/core/property/Property.js +1481 -0
  102. package/source/class/qx/core/property/PropertyStorageFactory.js +22 -0
  103. package/source/class/qx/core/property/SimplePropertyStorage.js +105 -0
  104. package/source/class/qx/data/Array.js +102 -57
  105. package/source/class/qx/data/MBinding.js +4 -29
  106. package/source/class/qx/data/SingleValueBinding.js +596 -1495
  107. package/source/class/qx/data/binding/AbstractSegment.js +197 -0
  108. package/source/class/qx/data/binding/ArrayIndexSegment.js +148 -0
  109. package/source/class/qx/data/binding/IInputReceiver.js +14 -0
  110. package/source/class/qx/data/binding/PropNameSegment.js +150 -0
  111. package/source/class/qx/data/controller/CheckedList.js +1 -1
  112. package/source/class/qx/data/controller/Form.js +78 -8
  113. package/source/class/qx/data/controller/Tree.js +27 -117
  114. package/source/class/qx/data/marshal/Json.js +46 -149
  115. package/source/class/qx/data/store/Json.js +0 -2
  116. package/source/class/qx/dev/Debug.js +1 -1
  117. package/source/class/qx/dev/LeakDetector.js +144 -0
  118. package/source/class/qx/dev/unit/AsyncWrapper.js +1 -0
  119. package/source/class/qx/dev/unit/MMock.js +7 -2
  120. package/source/class/qx/dev/unit/Sinon.js +0 -4
  121. package/source/class/qx/dev/unit/TestClass.js +2 -2
  122. package/source/class/qx/dev/unit/TestFunction.js +1 -0
  123. package/source/class/qx/dev/unit/TestLoaderBasic.js +1 -0
  124. package/source/class/qx/dev/unit/TestRunner.js +106 -0
  125. package/source/class/qx/event/IEventDispatcher.js +8 -4
  126. package/source/class/qx/event/Manager.js +4 -0
  127. package/source/class/qx/event/Messaging.js +2 -0
  128. package/source/class/qx/event/Pool.js +7 -0
  129. package/source/class/qx/event/Registration.js +33 -55
  130. package/source/class/qx/event/Timer.js +2 -0
  131. package/source/class/qx/event/Utils.js +25 -8
  132. package/source/class/qx/event/dispatch/AbstractBubbling.js +98 -194
  133. package/source/class/qx/event/dispatch/Direct.js +18 -13
  134. package/source/class/qx/event/handler/Appear.js +20 -24
  135. package/source/class/qx/event/handler/Application.js +4 -0
  136. package/source/class/qx/event/handler/DragDrop.js +182 -385
  137. package/source/class/qx/event/handler/Element.js +3 -0
  138. package/source/class/qx/event/handler/Focus.js +36 -30
  139. package/source/class/qx/event/handler/Input.js +5 -0
  140. package/source/class/qx/event/handler/Keyboard.js +107 -165
  141. package/source/class/qx/event/handler/Pointer.js +39 -68
  142. package/source/class/qx/event/handler/PointerCore.js +7 -25
  143. package/source/class/qx/event/handler/Window.js +5 -0
  144. package/source/class/qx/event/type/Event.js +12 -0
  145. package/source/class/qx/event/type/KeySequence.js +3 -0
  146. package/source/class/qx/event/type/Native.js +3 -0
  147. package/source/class/qx/html/Element.js +26 -91
  148. package/source/class/qx/io/jsonrpc/Client.js +1 -1
  149. package/source/class/qx/io/jsonrpc/protocol/Error.js +2 -2
  150. package/source/class/qx/io/jsonrpc/protocol/Parser.js +1 -0
  151. package/source/class/qx/io/jsonrpc/protocol/Result.js +2 -2
  152. package/source/class/qx/io/request/Xhr.js +3 -8
  153. package/source/class/qx/lang/normalize/Array.js +23 -1
  154. package/source/class/qx/locale/Date.js +520 -113
  155. package/source/class/qx/locale/LocalizedString.js +3 -0
  156. package/source/class/qx/locale/Manager.js +14 -3
  157. package/source/class/qx/locale/Number.js +60 -7
  158. package/source/class/qx/log/Logger.js +1 -1
  159. package/source/class/qx/module/Animation.js +2 -0
  160. package/source/class/qx/module/Attribute.js +2 -0
  161. package/source/class/qx/module/Css.js +7 -24
  162. package/source/class/qx/module/Event.js +2 -0
  163. package/source/class/qx/module/Manipulating.js +2 -0
  164. package/source/class/qx/module/Traversing.js +2 -0
  165. package/source/class/qx/test/Bootstrap.js +68 -53
  166. package/source/class/qx/test/Class.js +310 -2
  167. package/source/class/qx/test/Mixin.js +192 -42
  168. package/source/class/qx/test/Promise.js +129 -331
  169. package/source/class/qx/test/Theme.js +11 -0
  170. package/source/class/qx/test/bom/Font.js +2 -5
  171. package/source/class/qx/test/bom/Template.js +1 -1
  172. package/source/class/qx/test/compiler/ClassFile.js +14 -0
  173. package/source/class/qx/test/core/Assert.js +12 -0
  174. package/source/class/qx/test/core/Environment.js +17 -3
  175. package/source/class/qx/test/core/InheritanceDummy.js +10 -1
  176. package/source/class/qx/test/core/Object.js +51 -24
  177. package/source/class/qx/test/core/ObjectId.js +10 -1
  178. package/source/class/qx/test/core/Property.js +1338 -121
  179. package/source/class/qx/test/core/PropertyHelper.js +12 -0
  180. package/source/class/qx/test/core/Target.js +1 -0
  181. package/source/class/qx/test/core/Validation.js +2 -0
  182. package/source/class/qx/test/data/DataArray.js +218 -639
  183. package/source/class/qx/test/data/DataArrayWithChangeBubble.js +45 -215
  184. package/source/class/qx/test/data/MultiBinding.js +42 -0
  185. package/source/class/qx/test/data/async/__init__.js +4 -0
  186. package/source/class/qx/test/data/controller/Form.js +523 -14
  187. package/source/class/qx/test/data/controller/List.js +94 -426
  188. package/source/class/qx/test/data/controller/ListReverse.js +5 -20
  189. package/source/class/qx/test/data/controller/ListWithObjects.js +49 -225
  190. package/source/class/qx/test/data/controller/Object.js +54 -222
  191. package/source/class/qx/test/data/controller/Tree.js +195 -934
  192. package/source/class/qx/test/data/marshal/Json.js +74 -312
  193. package/source/class/qx/test/data/singlevalue/Array.js +55 -279
  194. package/source/class/qx/test/data/singlevalue/Async.js +173 -0
  195. package/source/class/qx/test/data/singlevalue/Deep.js +148 -327
  196. package/source/class/qx/test/data/singlevalue/Resolve.js +8 -28
  197. package/source/class/qx/test/data/singlevalue/Simple.js +124 -359
  198. package/source/class/qx/test/data/store/Json.js +86 -254
  199. package/source/class/qx/test/data/store/Jsonp.js +9 -29
  200. package/source/class/qx/test/data/store/Offline.js +2 -8
  201. package/source/class/qx/test/data/store/Rest.js +3 -3
  202. package/source/class/qx/test/dev/unit/Requirements.js +26 -10
  203. package/source/class/qx/test/event/GlobalError.js +2 -2
  204. package/source/class/qx/test/html/Iframe.js +1 -1
  205. package/source/class/qx/test/io/graphql/Client.js +2 -0
  206. package/source/class/qx/test/io/jsonrpc/Protocol.js +4 -2
  207. package/source/class/qx/test/io/request/MRequest.js +2 -8
  208. package/source/class/qx/test/io/request/Xhr.js +27 -117
  209. package/source/class/qx/test/lang/Function.js +6 -25
  210. package/source/class/qx/test/lang/Type.js +31 -13
  211. package/source/class/qx/test/locale/Date.js +173 -2
  212. package/source/class/qx/test/locale/Locale.js +23 -28
  213. package/source/class/qx/test/locale/Number.js +71 -0
  214. package/source/class/qx/test/log/Logger.js +7 -1
  215. package/source/class/qx/test/log/fixture/ClassA.js +2 -5
  216. package/source/class/qx/test/mobile/basic/Atom.js +3 -3
  217. package/source/class/qx/test/mobile/container/Scroll.js +4 -4
  218. package/source/class/qx/test/mobile/form/CheckBox.js +6 -12
  219. package/source/class/qx/test/performance/Property.js +5 -4
  220. package/source/class/qx/test/performance/widget/WidgetWithDecorator.js +2 -0
  221. package/source/class/qx/test/theme/Simple.js +34 -0
  222. package/source/class/qx/test/{MAppearance.js → theme/SimpleAppearance.js} +5 -4
  223. package/source/class/qx/test/{MDecoration.js → theme/SimpleDecoration.js} +6 -4
  224. package/source/class/qx/test/theme/manager/Meta.js +7 -5
  225. package/source/class/qx/test/tool/__init__.js +3 -0
  226. package/source/class/qx/test/tool/cli/AbstractValue.js +274 -0
  227. package/source/class/qx/test/tool/cli/Argument.js +384 -0
  228. package/source/class/qx/test/tool/cli/Command.js +387 -0
  229. package/source/class/qx/test/tool/cli/Flag.js +413 -0
  230. package/source/class/qx/test/tool/cli/__init__.js +3 -0
  231. package/source/class/qx/test/ui/LayoutTestCase.js +1 -14
  232. package/source/class/qx/test/ui/basic/Label.js +106 -0
  233. package/source/class/qx/test/ui/core/Blocker.js +125 -3
  234. package/source/class/qx/test/ui/form/Form.js +106 -0
  235. package/source/class/qx/test/ui/form/FormManager.js +6 -5
  236. package/source/class/qx/test/ui/form/SplitButton.js +1 -1
  237. package/source/class/qx/test/ui/toolbar/OverflowHandling.js +13 -14
  238. package/source/class/qx/test/ui/toolbar/ToolBar.js +16 -16
  239. package/source/class/qx/test/ui/tree/TreeFolder.js +5 -7
  240. package/source/class/qx/test/ui/tree/virtual/AbstractTreeTest.js +2 -0
  241. package/source/class/qx/test/ui/tree/virtual/Tree.js +36 -0
  242. package/source/class/qx/test/util/DateFormat.js +1 -1
  243. package/source/class/qx/test/util/PropertyUtil.js +0 -36
  244. package/source/class/qx/theme/classic/Appearance.js +1 -1
  245. package/source/class/qx/theme/indigo/ColorDark.js +2 -0
  246. package/source/class/qx/theme/manager/Font.js +6 -1
  247. package/source/class/qx/theme/manager/Meta.js +2 -1
  248. package/source/class/qx/theme/simple/Appearance.js +31 -95
  249. package/source/class/qx/theme/simple/Decoration.js +0 -1
  250. package/source/class/qx/theme/tangible/Appearance.js +1 -1
  251. package/source/class/qx/tool/cli/AbstractCliApp.js +72 -0
  252. package/source/class/qx/tool/cli/AbstractValue.js +186 -0
  253. package/source/class/qx/tool/cli/Argument.js +155 -0
  254. package/source/class/qx/tool/cli/Command.js +518 -0
  255. package/source/class/qx/tool/cli/Flag.js +202 -0
  256. package/source/class/qx/tool/cli/Parser.js +39 -0
  257. package/source/class/qx/tool/cli/__init__.js +26 -1
  258. package/source/class/qx/tool/compiler/Analyser.js +41 -13
  259. package/source/class/qx/tool/compiler/ClassFile.js +37 -9
  260. package/source/class/qx/tool/compiler/Console.js +2 -0
  261. package/source/class/qx/tool/compiler/MetaExtraction.js +53 -33
  262. package/source/class/qx/tool/compiler/app/Library.js +1 -1
  263. package/source/class/qx/tool/compiler/app/WebFont.js +2 -0
  264. package/source/class/qx/tool/compiler/cli/Application.js +58 -0
  265. package/source/class/qx/tool/{cli/commands → compiler/cli}/Command.js +99 -45
  266. package/source/class/qx/tool/{cli → compiler/cli}/ConfigDb.js +7 -7
  267. package/source/class/qx/tool/compiler/cli/ConfigLoader.js +272 -0
  268. package/source/class/qx/tool/{cli → compiler/cli}/LibraryApplication.js +3 -3
  269. package/source/class/qx/tool/compiler/cli/RootCommand.js +63 -0
  270. package/source/class/qx/tool/{cli → compiler/cli}/Watch.js +49 -24
  271. package/source/class/qx/tool/compiler/cli/__init__.js +3 -0
  272. package/source/class/qx/tool/{cli → compiler/cli}/api/AbstractApi.js +2 -11
  273. package/source/class/qx/tool/{cli → compiler/cli}/api/CompilerApi.js +11 -10
  274. package/source/class/qx/tool/{cli → compiler/cli}/api/LibraryApi.js +13 -4
  275. package/source/class/qx/tool/{cli → compiler/cli}/api/Test.js +1 -1
  276. package/source/class/qx/tool/compiler/cli/commands/Add.js +49 -0
  277. package/source/class/qx/tool/{cli → compiler/cli}/commands/Clean.js +12 -25
  278. package/source/class/qx/tool/{cli → compiler/cli}/commands/Compile.js +524 -615
  279. package/source/class/qx/tool/{cli → compiler/cli}/commands/Config.js +22 -20
  280. package/source/class/qx/tool/{cli → compiler/cli}/commands/Create.js +77 -54
  281. package/source/class/qx/tool/{cli → compiler/cli}/commands/Deploy.js +45 -60
  282. package/source/class/qx/tool/{cli → compiler/cli}/commands/Es6ify.js +57 -41
  283. package/source/class/qx/tool/{cli → compiler/cli}/commands/ExportGlyphs.js +26 -7
  284. package/source/class/qx/tool/compiler/cli/commands/Lint.js +420 -0
  285. package/source/class/qx/tool/{cli → compiler/cli}/commands/Migrate.js +40 -20
  286. package/source/class/qx/tool/{cli → compiler/cli}/commands/Package.js +20 -32
  287. package/source/class/qx/tool/compiler/cli/commands/Pkg.js +36 -0
  288. package/source/class/qx/tool/compiler/cli/commands/Prettier.js +278 -0
  289. package/source/class/qx/tool/{cli → compiler/cli}/commands/Run.js +43 -39
  290. package/source/class/qx/tool/{cli → compiler/cli}/commands/Serve.js +63 -61
  291. package/source/class/qx/tool/{cli → compiler/cli}/commands/Test.js +49 -52
  292. package/source/class/qx/tool/{cli → compiler/cli}/commands/Typescript.js +51 -30
  293. package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Class.js +54 -31
  294. package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Script.js +56 -32
  295. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Delete.js +19 -13
  296. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Get.js +19 -13
  297. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/List.js +20 -20
  298. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Set.js +28 -20
  299. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Install.js +140 -75
  300. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/List.js +119 -80
  301. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Publish.js +194 -178
  302. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Remove.js +18 -21
  303. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Update.js +90 -69
  304. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Upgrade.js +67 -54
  305. package/source/class/qx/tool/compiler/makers/AbstractAppMaker.js +2 -1
  306. package/source/class/qx/tool/compiler/resources/Manager.js +2 -0
  307. package/source/class/qx/tool/compiler/resources/ScssConverter.js +1 -1
  308. package/source/class/qx/tool/compiler/resources/ScssFile.js +1 -1
  309. package/source/class/qx/tool/compiler/targets/Target.js +5 -10
  310. package/source/class/qx/tool/compiler/targets/TypeScriptWriter.js +6 -2
  311. package/source/class/qx/tool/compiler/targets/meta/ApplicationMeta.js +2 -4
  312. package/source/class/qx/tool/compiler/targets/meta/BootJs.js +2 -0
  313. package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +2 -0
  314. package/source/class/qx/tool/config/Abstract.js +5 -5
  315. package/source/class/qx/tool/config/Lockfile.js +1 -1
  316. package/source/class/qx/tool/migration/BaseMigration.js +9 -7
  317. package/source/class/qx/tool/migration/M6_0_0.js +3 -3
  318. package/source/class/qx/tool/migration/M8_0_0.js +958 -0
  319. package/source/class/qx/tool/utils/Debounce.js +0 -1
  320. package/source/class/qx/tool/utils/Http.js +109 -21
  321. package/source/class/qx/tool/utils/LogManager.js +7 -0
  322. package/source/class/qx/tool/utils/Promisify.js +12 -1
  323. package/source/class/qx/tool/utils/QooxdooVersions.js +193 -0
  324. package/source/class/qx/tool/utils/Utils.js +8 -5
  325. package/source/class/qx/tool/utils/Website.js +9 -222
  326. package/source/class/qx/tool/utils/Zip.js +47 -0
  327. package/source/class/qx/tool/utils/files/Utils.js +3 -11
  328. package/source/class/qx/tool/utils/json/Tokenizer.js +5 -0
  329. package/source/class/qx/ui/basic/Atom.js +8 -8
  330. package/source/class/qx/ui/core/Blocker.js +17 -4
  331. package/source/class/qx/ui/core/DragDropCursor.js +2 -1
  332. package/source/class/qx/ui/core/EventHandler.js +13 -21
  333. package/source/class/qx/ui/core/LayoutItem.js +8 -31
  334. package/source/class/qx/ui/core/MExecutable.js +7 -31
  335. package/source/class/qx/ui/core/MNativeOverflow.js +4 -2
  336. package/source/class/qx/ui/core/Widget.js +50 -165
  337. package/source/class/qx/ui/core/scroll/IScrollBar.js +9 -3
  338. package/source/class/qx/ui/core/scroll/ScrollBar.js +7 -1
  339. package/source/class/qx/ui/core/scroll/ScrollPane.js +12 -4
  340. package/source/class/qx/ui/embed/Html.js +6 -2
  341. package/source/class/qx/ui/form/AbstractField.js +4 -12
  342. package/source/class/qx/ui/form/Button.js +6 -4
  343. package/source/class/qx/ui/form/CheckedSelectBox.js +8 -8
  344. package/source/class/qx/ui/form/FileSelectorButton.js +1 -1
  345. package/source/class/qx/ui/form/Form.js +3 -0
  346. package/source/class/qx/ui/form/IListItem.js +3 -1
  347. package/source/class/qx/ui/form/IRadioItem.js +3 -1
  348. package/source/class/qx/ui/form/MForm.js +3 -1
  349. package/source/class/qx/ui/form/Slider.js +6 -2
  350. package/source/class/qx/ui/form/SplitButton.js +5 -5
  351. package/source/class/qx/ui/form/TextField.js +1 -2
  352. package/source/class/qx/ui/form/validation/Manager.js +6 -2
  353. package/source/class/qx/ui/menubar/Button.js +1 -1
  354. package/source/class/qx/ui/mobile/basic/Atom.js +5 -5
  355. package/source/class/qx/ui/mobile/dialog/Menu.js +9 -31
  356. package/source/class/qx/ui/mobile/dialog/Popup.js +13 -1
  357. package/source/class/qx/ui/table/pane/FocusIndicator.js +5 -2
  358. package/source/class/qx/ui/table/pane/Scroller.js +5 -20
  359. package/source/class/qx/ui/table/selection/Model.js +1 -0
  360. package/source/class/qx/ui/toolbar/Button.js +1 -1
  361. package/source/class/qx/ui/toolbar/CheckBox.js +1 -1
  362. package/source/class/qx/ui/toolbar/FileSelectorButton.js +1 -2
  363. package/source/class/qx/ui/toolbar/Part.js +2 -2
  364. package/source/class/qx/ui/toolbar/PartContainer.js +2 -2
  365. package/source/class/qx/ui/toolbar/ToolBar.js +24 -49
  366. package/source/class/qx/ui/tree/VirtualTree.js +6 -4
  367. package/source/class/qx/ui/tree/core/AbstractItem.js +10 -17
  368. package/source/class/qx/ui/tree/core/IVirtualTree.js +4 -2
  369. package/source/class/qx/ui/tree/provider/IVirtualTreeProvider.js +20 -10
  370. package/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js +4 -1
  371. package/source/class/qx/ui/virtual/cell/Cell.js +20 -48
  372. package/source/class/qx/ui/virtual/cell/WidgetCell.js +2 -4
  373. package/source/class/qx/ui/virtual/core/Axis.js +4 -0
  374. package/source/class/qx/ui/virtual/core/ILayer.js +14 -10
  375. package/source/class/qx/ui/virtual/core/Scroller.js +4 -4
  376. package/source/class/qx/ui/virtual/layer/WidgetCell.js +4 -0
  377. package/source/class/qx/ui/virtual/selection/Abstract.js +3 -0
  378. package/source/class/qx/ui/virtual/selection/MModel.js +1 -1
  379. package/source/class/qx/ui/window/IDesktop.js +6 -2
  380. package/source/class/qx/ui/window/IWindowManager.js +10 -4
  381. package/source/class/qx/ui/window/MDesktop.js +2 -1
  382. package/source/class/qx/ui/window/Manager.js +1 -1
  383. package/source/class/qx/ui/window/Window.js +6 -4
  384. package/source/class/qx/util/OOUtil.js +8 -9
  385. package/source/class/qx/util/PropertyUtil.js +34 -154
  386. package/source/class/qx/util/ResponseParser.js +2 -0
  387. package/source/class/qx/util/Serializer.js +69 -114
  388. package/source/class/qx/util/format/DateFormat.js +3 -2
  389. package/source/global.d.ts +4 -0
  390. package/source/resource/qx/tool/bin/download-assets +0 -2
  391. package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
  392. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
  393. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
  394. package/source/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
  395. package/source/resource/qx/tool/{schema → compiler/schema}/compile-1-0-0.json +15 -3
  396. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
  397. package/source/resource/qx/tool/website/build/404.html +22 -22
  398. package/source/resource/qx/tool/website/build/about.html +23 -23
  399. package/source/resource/qx/tool/website/build/assets/common.js +30 -18
  400. package/source/resource/qx/tool/website/build/assets/custom.css +290 -0
  401. package/source/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
  402. package/source/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
  403. package/source/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
  404. package/source/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
  405. package/source/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
  406. package/source/resource/qx/tool/website/build/index.html +24 -24
  407. package/source/resource/qx/tool/website/build/scripts/serve.js +63 -65
  408. package/source/resource/qx/tool/website/partials/footer.html +8 -13
  409. package/source/resource/qx/tool/website/partials/head.html +9 -7
  410. package/source/resource/qx/tool/website/partials/header.html +3 -3
  411. package/source/resource/qx/tool/website/src/assets/common.js +32 -0
  412. package/source/resource/qx/tool/website/src/assets/custom.css +290 -0
  413. package/source/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
  414. package/source/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
  415. package/source/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
  416. package/source/resource/qx/tool/website/src/index.html +2 -2
  417. package/source/resource/qx/tool/website/src/scripts/serve.js +63 -65
  418. package/lib/resource/qx/tool/bin/build-devtools +0 -13
  419. package/lib/resource/qx/tool/bin/build-website +0 -15
  420. package/lib/resource/qx/tool/bin/download-assets +0 -23
  421. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +0 -1
  422. package/lib/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
  423. package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
  424. package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
  425. package/lib/resource/qx/tool/website/build/assets/jquery.js +0 -5453
  426. package/lib/resource/qx/tool/website/build/qooxdoo.css +0 -21
  427. package/lib/resource/qx/tool/website/sass/qooxdoo.css +0 -3
  428. package/lib/resource/qx/tool/website/sass/qooxdoo.css.map +0 -1
  429. package/lib/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
  430. package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
  431. package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
  432. package/lib/resource/qx/tool/website/src/assets/jquery.js +0 -5453
  433. package/source/class/qx/core/Property.js +0 -2100
  434. package/source/class/qx/tool/cli/Application.js +0 -47
  435. package/source/class/qx/tool/cli/Cli.js +0 -713
  436. package/source/class/qx/tool/cli/commands/Add.js +0 -46
  437. package/source/class/qx/tool/cli/commands/Lint.js +0 -255
  438. package/source/class/qx/tool/cli/commands/Pkg.js +0 -56
  439. package/source/class/qx/tool/cli/commands/package/Migrate.js +0 -37
  440. package/source/class/qx/tool/compiler/app/Cldr.js +0 -725
  441. package/source/resource/qx/tool/bin/build-devtools +0 -13
  442. package/source/resource/qx/tool/bin/build-website +0 -15
  443. package/source/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
  444. package/source/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
  445. package/source/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
  446. package/source/resource/qx/tool/website/build/assets/jquery.js +0 -5453
  447. package/source/resource/qx/tool/website/build/qooxdoo.css +0 -21
  448. package/source/resource/qx/tool/website/sass/qooxdoo.scss +0 -31
  449. package/source/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
  450. package/source/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
  451. package/source/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
  452. package/source/resource/qx/tool/website/src/assets/jquery.js +0 -5453
  453. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
  454. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +0 -0
  455. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
  456. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
  457. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
  458. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/singleton.tmpl.js +0 -0
  459. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
  460. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
  461. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
  462. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
  463. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
  464. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
  465. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
  466. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
  467. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
  468. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
  469. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
  470. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
  471. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
  472. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
  473. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
  474. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
  475. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
  476. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
  477. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
  478. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
  479. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
  480. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
  481. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
  482. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
  483. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
  484. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
  485. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
  486. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
  487. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
  488. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
  489. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
  490. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
  491. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
  492. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
  493. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
  494. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
  495. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/css/custom.css +0 -0
  496. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
  497. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
  498. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
  499. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
  500. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
  501. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
  502. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
  503. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
  504. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
  505. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
  506. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
  507. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
  508. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
  509. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
  510. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
  511. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
  512. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
  513. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
  514. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
  515. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
  516. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
  517. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
  518. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
  519. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
  520. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
  521. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
  522. /package/lib/resource/qx/tool/{loadsass.js → compiler/loadsass.js} +0 -0
  523. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
  524. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +0 -0
  525. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
  526. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
  527. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
  528. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/singleton.tmpl.js +0 -0
  529. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
  530. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
  531. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
  532. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
  533. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
  534. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
  535. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
  536. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
  537. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
  538. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
  539. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
  540. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
  541. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
  542. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
  543. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
  544. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
  545. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
  546. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
  547. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
  548. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
  549. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
  550. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
  551. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
  552. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
  553. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
  554. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
  555. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
  556. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
  557. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
  558. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
  559. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
  560. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
  561. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
  562. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
  563. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
  564. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
  565. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/_styles.scss +0 -0
  566. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/custom.scss +0 -0
  567. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
  568. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
  569. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
  570. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
  571. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
  572. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
  573. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
  574. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
  575. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
  576. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
  577. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
  578. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
  579. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
  580. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
  581. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
  582. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
  583. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
  584. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
  585. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
  586. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
  587. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
  588. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
  589. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
  590. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
  591. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
  592. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
  593. /package/source/resource/qx/tool/{loadsass.js → compiler/loadsass.js} +0 -0
@@ -15,6 +15,7 @@
15
15
  * Sebastian Werner (wpbasti)
16
16
  * Andreas Ecker (ecker)
17
17
  * Fabian Jakobs (fjakobs)
18
+ * Dmitrii Zolotov (goldim)
18
19
 
19
20
  ************************************************************************ */
20
21
 
@@ -22,7 +23,9 @@
22
23
  * Static class that provides localized date information (like names of week
23
24
  * days, AM/PM markers, start of week, etc.).
24
25
  *
25
- * @cldr()
26
+ * @ignore(Intl.DateTimeFormat)
27
+ * @ignore(Intl.Locale)
28
+ * @ignore(Intl)
26
29
  */
27
30
  qx.Class.define("qx.locale.Date", {
28
31
  statics: {
@@ -40,7 +43,7 @@ qx.Class.define("qx.locale.Date", {
40
43
  * @return {String} translated AM marker.
41
44
  */
42
45
  getAmMarker(locale) {
43
- return this.__mgr.localize("cldr_am", [], locale);
46
+ return this.__localizeMarker("am", 1, locale);
44
47
  },
45
48
 
46
49
  /**
@@ -50,7 +53,35 @@ qx.Class.define("qx.locale.Date", {
50
53
  * @return {String} translated PM marker.
51
54
  */
52
55
  getPmMarker(locale) {
53
- return this.__mgr.localize("cldr_pm", [], locale);
56
+ return this.__localizeMarker("pm", 12, locale);
57
+ },
58
+
59
+ /**
60
+ * Localize day period/marker of a month
61
+ *
62
+ * @param {String} id LocalizedString Id
63
+ * @param {Integer} month index of the month. 0=january, 1=february, ...
64
+ * @param {String} locale optional locale to be used
65
+ * @returns {qx.locale.LocalizedString} localized day marker
66
+ */
67
+ __localizeMarker(id, month, locale) {
68
+ locale = this.__transformLocale(locale);
69
+ const date = new Date();
70
+ date.setHours(month);
71
+ const timeOptions = {
72
+ hour: "numeric",
73
+ minute: "numeric",
74
+ hour12: true
75
+ };
76
+ const timeParts = Intl.DateTimeFormat(locale, timeOptions).formatToParts(
77
+ date
78
+ );
79
+ const found = timeParts.find(part => part.type === "dayPeriod");
80
+ let value;
81
+ if (found) {
82
+ value = found.value;
83
+ }
84
+ return new qx.locale.LocalizedString(value, "cldr_" + id, [], true);
54
85
  },
55
86
 
56
87
  /**
@@ -66,32 +97,42 @@ qx.Class.define("qx.locale.Date", {
66
97
  * @return {String[]} array of localized day names starting with sunday.
67
98
  */
68
99
  getDayNames(length, locale, context, withFallback) {
69
- var context = context ? context : "format";
100
+ context = context ? context : "format";
70
101
 
71
102
  if (qx.core.Environment.get("qx.debug")) {
72
103
  qx.core.Assert.assertInArray(length, ["abbreviated", "narrow", "wide"]);
73
104
  qx.core.Assert.assertInArray(context, ["format", "stand-alone"]);
74
105
  }
75
106
 
76
- var days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
77
-
78
- var names = [];
79
-
80
- for (var i = 0; i < days.length; i++) {
81
- var key = "cldr_day_" + context + "_" + length + "_" + days[i];
82
- names.push(
107
+ let days = [];
108
+ for (let i = 0; i < 7; i++) {
109
+ const localizedDay = this.getDayName(
110
+ length,
111
+ i,
112
+ locale,
113
+ context,
83
114
  withFallback
84
- ? this.__localizeWithFallback(
85
- context,
86
- context === "format" ? "stand-alone" : "format",
87
- key,
88
- locale
89
- )
90
- : this.__mgr.localize(key, [], locale)
91
115
  );
116
+ days.push(localizedDay);
92
117
  }
118
+ return days;
119
+ },
93
120
 
94
- return names;
121
+ /**
122
+ * Returns weekday for day of month
123
+ *
124
+ * @param {Integer} day day of month
125
+ * @param {String} id LocalizedString id
126
+ * @param {String} locale locale to be used
127
+ * @param {object} options date/time Intl API options
128
+ * @returns {qx.locale.LocalizedString} localized weekday
129
+ */
130
+ __getWeekdayFromDay(day, id, locale, options) {
131
+ const parts = new Intl.DateTimeFormat(locale, options).formatToParts(
132
+ new Date(Date.UTC(2021, 10, day))
133
+ );
134
+ const value = parts.find(part => part.type === "weekday")?.value;
135
+ return new qx.locale.LocalizedString(value, id, [], true);
95
136
  },
96
137
 
97
138
  /**
@@ -108,7 +149,7 @@ qx.Class.define("qx.locale.Date", {
108
149
  * @return {String} localized day name
109
150
  */
110
151
  getDayName(length, day, locale, context, withFallback) {
111
- var context = context ? context : "format";
152
+ context = context ? context : "format";
112
153
 
113
154
  if (qx.core.Environment.get("qx.debug")) {
114
155
  qx.core.Assert.assertInArray(length, ["abbreviated", "narrow", "wide"]);
@@ -117,17 +158,26 @@ qx.Class.define("qx.locale.Date", {
117
158
  qx.core.Assert.assertInArray(context, ["format", "stand-alone"]);
118
159
  }
119
160
 
120
- var days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
121
-
122
- var key = "cldr_day_" + context + "_" + length + "_" + days[day];
123
- return withFallback
124
- ? this.__localizeWithFallback(
125
- context,
126
- context === "format" ? "stand-alone" : "format",
127
- key,
128
- locale
129
- )
130
- : this.__mgr.localize(key, [], locale);
161
+ let weekFormat = "short";
162
+ if (length === "narrow") {
163
+ weekFormat = "narrow";
164
+ } else if (length === "wide") {
165
+ weekFormat = "long";
166
+ }
167
+
168
+ const options = { weekday: weekFormat };
169
+ if (context === "format") {
170
+ options.day = "numeric";
171
+ }
172
+
173
+ locale = this.__transformLocale(locale);
174
+ const days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
175
+ return this.__getWeekdayFromDay(
176
+ day,
177
+ "cldr_day_" + context + "_" + length + "_" + days[day],
178
+ locale,
179
+ options
180
+ );
131
181
  },
132
182
 
133
183
  /**
@@ -143,30 +193,42 @@ qx.Class.define("qx.locale.Date", {
143
193
  * @return {String[]} array of localized month names starting with january.
144
194
  */
145
195
  getMonthNames(length, locale, context, withFallback) {
146
- var context = context ? context : "format";
196
+ context = context ? context : "format";
147
197
 
148
198
  if (qx.core.Environment.get("qx.debug")) {
149
199
  qx.core.Assert.assertInArray(length, ["abbreviated", "narrow", "wide"]);
150
200
  qx.core.Assert.assertInArray(context, ["format", "stand-alone"]);
151
201
  }
152
202
 
153
- var names = [];
154
-
155
- for (var i = 0; i < 12; i++) {
156
- var key = "cldr_month_" + context + "_" + length + "_" + (i + 1);
157
- names.push(
203
+ const months = [];
204
+ for (let i = 0; i < 12; i++) {
205
+ const localizedMonth = this.getMonthName(
206
+ length,
207
+ i,
208
+ locale,
209
+ context,
158
210
  withFallback
159
- ? this.__localizeWithFallback(
160
- context,
161
- context === "format" ? "stand-alone" : "format",
162
- key,
163
- locale
164
- )
165
- : this.__mgr.localize(key, [], locale)
166
211
  );
212
+ months.push(localizedMonth);
167
213
  }
214
+ return months;
215
+ },
168
216
 
169
- return names;
217
+ /**
218
+ * Localize month
219
+ *
220
+ * @param {Integer} month index of the month. 0=january, 1=february, ...
221
+ * @param {String} id LocalizedString id
222
+ * @param {String} locale locale to be used
223
+ * @param {object} options Intl API date/time options
224
+ * @returns {qx.locale.LocalizedString} localized string
225
+ */
226
+ __localizeMonth(month, id, locale, options) {
227
+ const parts = new Intl.DateTimeFormat(locale, options).formatToParts(
228
+ new Date(2000, month, 1)
229
+ );
230
+ const value = parts.find(part => part.type === "month")?.value;
231
+ return new qx.locale.LocalizedString(value, id, [], true);
170
232
  },
171
233
 
172
234
  /**
@@ -183,22 +245,27 @@ qx.Class.define("qx.locale.Date", {
183
245
  * @return {String} localized month name
184
246
  */
185
247
  getMonthName(length, month, locale, context, withFallback) {
186
- var context = context ? context : "format";
248
+ context = context ? context : "format";
187
249
 
188
250
  if (qx.core.Environment.get("qx.debug")) {
189
251
  qx.core.Assert.assertInArray(length, ["abbreviated", "narrow", "wide"]);
190
252
  qx.core.Assert.assertInArray(context, ["format", "stand-alone"]);
191
253
  }
192
254
 
193
- var key = "cldr_month_" + context + "_" + length + "_" + (month + 1);
194
- return withFallback
195
- ? this.__localizeWithFallback(
196
- context,
197
- context === "format" ? "stand-alone" : "format",
198
- key,
199
- locale
200
- )
201
- : this.__mgr.localize(key, [], locale);
255
+ let monthLength = "short";
256
+ if (length === "narrow") {
257
+ monthLength = "narrow";
258
+ } else if (length === "wide") {
259
+ monthLength = "long";
260
+ }
261
+
262
+ const options = { month: monthLength };
263
+ if (context === "format") {
264
+ options.day = "numeric";
265
+ }
266
+ locale = this.__transformLocale(locale);
267
+ const id = "cldr_month_" + context + "_" + length + "_" + (month + 1);
268
+ return this.__localizeMonth(month, id, locale, options);
202
269
  },
203
270
 
204
271
  /**
@@ -213,9 +280,83 @@ qx.Class.define("qx.locale.Date", {
213
280
  if (qx.core.Environment.get("qx.debug")) {
214
281
  qx.core.Assert.assertInArray(size, ["short", "medium", "long", "full"]);
215
282
  }
283
+ locale = this.__transformLocale(locale);
284
+ var id = "cldr_date_format_" + size;
285
+ return this.__localizeDate(id, locale, { dateStyle: size });
286
+ },
216
287
 
217
- var key = "cldr_date_format_" + size;
218
- return this.__mgr.localize(key, [], locale);
288
+ /**
289
+ * Localize date via Intl API
290
+ *
291
+ * @param {String} id LocalizedString id
292
+ * @param {String} locale locale to be used
293
+ * @param {object} options date/time Intl API options
294
+ * @returns {qx.locale.LocalizedString} localized date
295
+ */
296
+ __localizeDate(id, locale, options) {
297
+ const parts = new Intl.DateTimeFormat(locale, { ...options, calendar: "gregory" }).formatToParts(
298
+ new Date(2000, 1, 1)
299
+ );
300
+ const nonLiteralPartCount = parts.filter(
301
+ part => part.type !== "literal"
302
+ ).length;
303
+ const result = [];
304
+
305
+ for (let part of parts) {
306
+ let value = part.value;
307
+ let type = part.type;
308
+ let length = value.length;
309
+ let lexem = "";
310
+
311
+ if (part.type === "year") {
312
+ if (length === 4) {
313
+ lexem = "y";
314
+ } else if (length === 2) {
315
+ lexem = "yy";
316
+ } else {
317
+ lexem = "y".repeat(length);
318
+ }
319
+ } else if (type === "month") {
320
+ let letter = nonLiteralPartCount === 1 ? "L" : "M";
321
+ const parsedValue = parseInt(value);
322
+ if (!isNaN(parsedValue)) {
323
+ lexem = letter.repeat(length);
324
+ } else {
325
+ let context = nonLiteralPartCount === 1 ? "stand-alone" : "format";
326
+ let monthShort = this.getMonthName(
327
+ "abbreviated",
328
+ 1,
329
+ locale,
330
+ context
331
+ ).toString();
332
+ if (monthShort === value) {
333
+ lexem = letter.repeat(3);
334
+ } else {
335
+ let monthLong = this.getMonthName(
336
+ "wide",
337
+ 1,
338
+ locale,
339
+ context
340
+ ).toString();
341
+ if (monthLong === value) {
342
+ lexem = letter.repeat(4);
343
+ }
344
+ }
345
+ }
346
+ } else if (type === "literal") {
347
+ lexem = value;
348
+ } else if (type === "day") {
349
+ lexem = "d";
350
+ } else if (type === "weekday") {
351
+ if (value === this.getDayName("wide", 2, locale).toString()) {
352
+ lexem = "EEEE";
353
+ } else {
354
+ lexem = "E";
355
+ }
356
+ }
357
+ result.push(lexem);
358
+ }
359
+ return new qx.locale.LocalizedString(result.join(""), id, [], true);
219
360
  },
220
361
 
221
362
  /**
@@ -229,19 +370,212 @@ qx.Class.define("qx.locale.Date", {
229
370
  * Examples are "yyyyMMMM" for year + full month, or "MMMd" for abbreviated month + day.
230
371
  * @param fallback {String} fallback format string if no localized version is found
231
372
  * @param locale {String} optional locale to be used
232
- * @return {String} best matching format string
373
+ * @return {qx.locale.LocalizedString} best matching format string
233
374
  */
234
375
  getDateTimeFormat(canonical, fallback, locale) {
235
- var key = "cldr_date_time_format_" + canonical;
236
- var localizedFormat = this.__mgr.localize(key, [], locale);
376
+ locale = this.__transformLocale(locale);
377
+
378
+ const id = "cldr_date_time_format_" + canonical;
379
+ const dateLocaleTable = {
380
+ d: { day: "2-digit" },
381
+ y: { year: "numeric" },
382
+ M: { month: "numeric" },
383
+ MMM: { month: "short" },
384
+ MMMd: { day: "numeric", month: "short" },
385
+ yMMM: { year: "numeric", month: "short" },
386
+ Ed: { weekday: "short", day: "numeric" },
387
+ Md: { month: "numeric", day: "numeric" },
388
+ yM: { year: "numeric", month: "numeric" },
389
+ yMEd: {
390
+ year: "numeric",
391
+ month: "numeric",
392
+ day: "numeric",
393
+ weekday: "narrow"
394
+ },
395
+ yMMMEd: {
396
+ year: "numeric",
397
+ month: "short",
398
+ day: "numeric",
399
+ weekday: "narrow"
400
+ },
401
+ yMMMd: { year: "numeric", month: "short", day: "numeric" },
402
+ yMd: { year: "numeric", month: "numeric", day: "numeric" },
403
+ MEd: { month: "numeric", day: "numeric", weekday: "narrow" },
404
+ MMMEd: { month: "short", day: "numeric", weekday: "narrow" }
405
+ };
237
406
 
238
- if (localizedFormat == key) {
407
+ const timeLocaleTable = {
408
+ hm: { hour: "numeric", minute: "numeric", hour12: true },
409
+ Hm: { hour: "2-digit", minute: "2-digit" },
410
+ ms: { minute: "2-digit", second: "2-digit" },
411
+ hms: {
412
+ hour: "numeric",
413
+ minute: "2-digit",
414
+ second: "2-digit",
415
+ hour12: true
416
+ },
417
+ Hms: {
418
+ hour: "2-digit",
419
+ minute: "2-digit",
420
+ second: "2-digit"
421
+ }
422
+ };
423
+ if (dateLocaleTable.hasOwnProperty(canonical)) {
424
+ return this.__localizeDate(id, locale, dateLocaleTable[canonical]);
425
+ }
426
+ if (timeLocaleTable.hasOwnProperty(canonical)) {
427
+ return this.__localizeTime(id, locale, timeLocaleTable[canonical]);
428
+ }
429
+
430
+ switch (canonical) {
431
+ case "yQ":
432
+ return this.__localizeYQ(id, locale);
433
+ case "yQQQ":
434
+ return this.__localizeYQQQ(id, locale);
435
+ }
436
+
437
+ let localizedFormat = this.__mgr.localize(id, [], locale);
438
+
439
+ if (localizedFormat == id) {
239
440
  localizedFormat = fallback;
240
441
  }
241
442
 
242
443
  return localizedFormat;
243
444
  },
244
445
 
446
+ /**
447
+ * Localize yQ format
448
+ *
449
+ * @param {String} id LocalizedString id
450
+ * @param {String} locale locale to be used
451
+ * @returns {qx.locale.LocalizedString} localized yQ format
452
+ */
453
+ __localizeYQ(id, locale) {
454
+ const result = "yQ";
455
+ if (locale === "cy" || locale === "cy-GB") {
456
+ return "Q y";
457
+ }
458
+ return new qx.locale.LocalizedString(result, id, [], true);
459
+ },
460
+
461
+ /**
462
+ * Localize yQQQ format
463
+ *
464
+ * @param {String} id LocalizedString id
465
+ * @param {String} locale locale to be used
466
+ * @returns {qx.locale.LocalizedString}
467
+ */
468
+ __localizeYQQQ(id, locale) {
469
+ const mostCase = [
470
+ "az",
471
+ "bs-Cyrl",
472
+ "dz",
473
+ "ckb",
474
+ "ii",
475
+ "kok",
476
+ "lt",
477
+ "gu",
478
+ "haw",
479
+ "ml",
480
+ "mni",
481
+ "my",
482
+ "ne",
483
+ "ps",
484
+ "qu",
485
+ "rw",
486
+ "sah",
487
+ "sd",
488
+ "se",
489
+ "seh",
490
+ "si",
491
+ "sw",
492
+ "tk",
493
+ "to",
494
+ "tr",
495
+ "ug",
496
+ "xh",
497
+ "yi"
498
+ ];
499
+
500
+ let result = "QQQ y";
501
+ if (mostCase.includes(locale)) {
502
+ result = "y QQQ";
503
+ }
504
+ switch (locale) {
505
+ case "ja":
506
+ result = "y/QQQ";
507
+ break;
508
+ case "ka":
509
+ case "kgp":
510
+ case "sq":
511
+ result = "QQQ, y";
512
+ break;
513
+ case "kk":
514
+ result = "y 'ж'. QQQ";
515
+ break;
516
+ case "ko":
517
+ result = "y년 QQQ";
518
+ break;
519
+ case "ky":
520
+ result = "y-'ж'., QQQ";
521
+ break;
522
+ case "lv":
523
+ result = "y. 'g'. QQQ";
524
+ break;
525
+ case "mk":
526
+ case "ru":
527
+ case "bg":
528
+ result = "QQQ y 'г'.";
529
+ break;
530
+ case "mn":
531
+ result = "y 'оны' QQQ";
532
+ break;
533
+ case "mt":
534
+ result = "QQQ - y";
535
+ break;
536
+ case "pt-PT":
537
+ result = "QQQQ 'de' y";
538
+ break;
539
+ case "pt":
540
+ result = "QQQ 'de' y";
541
+ break;
542
+ case "sr-Latn":
543
+ case "sr":
544
+ case "bs":
545
+ case "hr":
546
+ result = "QQQ y.";
547
+ break;
548
+ case "tt":
549
+ result = "y 'ел', QQQ";
550
+ break;
551
+ case "uz-Cyrl":
552
+ case "uz":
553
+ result = "y, QQQ";
554
+ break;
555
+ case "yue-Hans":
556
+ case "yue":
557
+ case "zh-Hant":
558
+ result = "y年QQQ";
559
+ break;
560
+ case "zh":
561
+ result = "y年第Q季度";
562
+ break;
563
+ case "eu":
564
+ result = "y('e')'ko' QQQ";
565
+ break;
566
+ case "fo":
567
+ result = "QQQ 'í' y";
568
+ break;
569
+ case "hu":
570
+ result = "y. QQQ";
571
+ break;
572
+ case "hy":
573
+ result = "y թ. QQQ";
574
+ break;
575
+ }
576
+ return new qx.locale.LocalizedString(result, id, [], true);
577
+ },
578
+
245
579
  /**
246
580
  * Return localized time format string to be used with {@link qx.util.format.DateFormat}.
247
581
  *
@@ -251,43 +585,107 @@ qx.Class.define("qx.locale.Date", {
251
585
  * @return {String} localized time format string
252
586
  */
253
587
  getTimeFormat(size, locale) {
588
+ locale = this.__transformLocale(locale);
254
589
  if (qx.core.Environment.get("qx.debug")) {
255
590
  qx.core.Assert.assertInArray(size, ["short", "medium", "long", "full"]);
256
591
  }
257
592
 
258
- var key = "cldr_time_format_" + size;
259
- var localizedFormat = this.__mgr.localize(key, [], locale);
260
-
261
- if (localizedFormat != key) {
262
- return localizedFormat;
263
- }
264
-
265
- switch (size) {
266
- case "short":
267
- case "medium":
268
- return qx.locale.Date.getDateTimeFormat("HHmm", "HH:mm");
593
+ return this.__localizeTime("cldr_time_format_" + size, locale, {
594
+ timeStyle: size
595
+ });
596
+ },
269
597
 
270
- case "long":
271
- return qx.locale.Date.getDateTimeFormat("HHmmss", "HH:mm:ss");
598
+ /**
599
+ * Localize time via Intl API
600
+ *
601
+ * @param {String} id LocalizedString id
602
+ * @param {String} locale locale to be used
603
+ * @param {object} options date/time Intl API options
604
+ * @returns {qx.locale.LocalizedString} localized time
605
+ */
606
+ __localizeTime(id, locale, options) {
607
+ const parts = new Intl.DateTimeFormat(locale, { ...options, calendar: "gregory" }).formatToParts(
608
+ new Date(2000, 1, 1, 1, 1, 1)
609
+ );
610
+ let lexems = [];
611
+ parts.forEach(part => {
612
+ let lexem = "";
613
+ let value = part.value;
614
+ let length = value.length;
615
+ switch (part.type) {
616
+ case "literal":
617
+ lexem = value;
618
+ break;
619
+ case "dayPeriod":
620
+ lexem = "a";
621
+ break;
622
+ case "hour":
623
+ lexem = this.__getSmallOrBigH(locale, options).repeat(length);
624
+ break;
625
+ case "minute":
626
+ lexem = "m".repeat(length);
627
+ break;
628
+ case "second":
629
+ lexem = "s".repeat(length);
630
+ break;
631
+ case "timeZoneName":
632
+ lexem = this.__getTimezoneFormat(locale, value);
633
+ break;
634
+ default:
635
+ lexem = "";
636
+ }
637
+ lexems.push(lexem);
638
+ });
639
+
640
+ let str = lexems.join("").replace(/[\u202F\u00A0]/g, ' ');
641
+ return new qx.locale.LocalizedString(str, id, [], true);
642
+ },
272
643
 
273
- case "full":
274
- return qx.locale.Date.getDateTimeFormat("HHmmsszz", "HH:mm:ss zz");
644
+ /**
645
+ * Detects what hour format and returns small h if
646
+ * 24 hour format and big H if 12 hour format
647
+ *
648
+ * @param {String} locale locale to be used
649
+ * @param {object} options date/time Intl API options
650
+ * @returns {String} h or H
651
+ */
652
+ __getSmallOrBigH(locale, options) {
653
+ const hour24 = new Intl.DateTimeFormat(locale, options)
654
+ .formatToParts(new Date(2000, 1, 1, 13, 1, 1))
655
+ .find(subPart => subPart.type === "hour")
656
+ .value.includes("13");
657
+ return hour24 ? "h" : "H";
658
+ },
275
659
 
276
- default:
277
- throw new Error("This case should never happen.");
278
- }
660
+ /**
661
+ *
662
+ * @param {String} locale locale to be used
663
+ * @param {String} value timezone from options
664
+ * @returns {String} timezone format
665
+ */
666
+ __getTimezoneFormat(locale, value) {
667
+ let short = new Intl.DateTimeFormat(locale, {
668
+ timeZoneName: "short"
669
+ })
670
+ .formatToParts(new Date(2000, 1, 1, 1, 1, 1))
671
+ .find(part => part.type === "timeZoneName")?.value;
672
+ return short === value ? "z" : "zzzz";
279
673
  },
280
674
 
281
675
  /**
282
676
  * Return the day the week starts with
283
677
  *
284
- * Reference: Common Locale Data Repository (cldr) supplementalData.xml
285
- *
286
678
  * @param locale {String} optional locale to be used
287
679
  * @return {Integer} index of the first day of the week. 0=sunday, 1=monday, ...
288
680
  */
289
681
  getWeekStart(locale) {
290
- var weekStart = {
682
+ let intlLocale = this.__transformLocale(locale);
683
+ if (this.__isIntlWeekInfoSupported(intlLocale)) {
684
+ let info = new Intl.Locale(intlLocale).weekInfo;
685
+ return info.firstDay !== 7 ? info.firstDay : 0;
686
+ }
687
+ // old implementation
688
+ const weekStart = {
291
689
  // default is monday
292
690
  MV: 5, // friday
293
691
  AE: 6, // saturday
@@ -355,7 +753,7 @@ qx.Class.define("qx.locale.Date", {
355
753
  TJ: 0
356
754
  };
357
755
 
358
- var territory = qx.locale.Date._getTerritory(locale);
756
+ const territory = qx.locale.Date._getTerritory(locale);
359
757
 
360
758
  // default is monday
361
759
  return weekStart[territory] != null ? weekStart[territory] : 1;
@@ -364,13 +762,17 @@ qx.Class.define("qx.locale.Date", {
364
762
  /**
365
763
  * Return the day the weekend starts with
366
764
  *
367
- * Reference: Common Locale Data Repository (cldr) supplementalData.xml
368
- *
369
765
  * @param locale {String} optional locale to be used
370
766
  * @return {Integer} index of the first day of the weekend. 0=sunday, 1=monday, ...
371
767
  */
372
768
  getWeekendStart(locale) {
373
- var weekendStart = {
769
+ let intlLocale = this.__transformLocale(locale);
770
+ if (this.__isIntlWeekInfoSupported(intlLocale)) {
771
+ let info = new Intl.Locale(intlLocale).weekInfo;
772
+ return info.weekend[0] !== 7 ? info.weekend[0] : 0;
773
+ }
774
+ // default is monday
775
+ const weekendStart = {
374
776
  // default is saturday
375
777
  EG: 5, // friday
376
778
  IL: 5,
@@ -393,7 +795,7 @@ qx.Class.define("qx.locale.Date", {
393
795
  YE: 4
394
796
  };
395
797
 
396
- var territory = qx.locale.Date._getTerritory(locale);
798
+ const territory = qx.locale.Date._getTerritory(locale);
397
799
 
398
800
  // default is saturday
399
801
  return weekendStart[territory] != null ? weekendStart[territory] : 6;
@@ -402,13 +804,18 @@ qx.Class.define("qx.locale.Date", {
402
804
  /**
403
805
  * Return the day the weekend ends with
404
806
  *
405
- * Reference: Common Locale Data Repository (cldr) supplementalData.xml
406
- *
407
807
  * @param locale {String} optional locale to be used
408
808
  * @return {Integer} index of the last day of the weekend. 0=sunday, 1=monday, ...
409
809
  */
410
810
  getWeekendEnd(locale) {
411
- var weekendEnd = {
811
+ let intlLocale = this.__transformLocale(locale);
812
+ if (this.__isIntlWeekInfoSupported(intlLocale)) {
813
+ let info = new Intl.Locale(intlLocale).weekInfo;
814
+ const end = info.weekend[info.weekend.length - 1];
815
+ return end !== 7 ? end : 0;
816
+ }
817
+ // old implementation
818
+ const weekendEnd = {
412
819
  // default is sunday
413
820
  AE: 5, // friday
414
821
  BH: 5,
@@ -432,7 +839,7 @@ qx.Class.define("qx.locale.Date", {
432
839
  SY: 6
433
840
  };
434
841
 
435
- var territory = qx.locale.Date._getTerritory(locale);
842
+ const territory = qx.locale.Date._getTerritory(locale);
436
843
 
437
844
  // default is sunday
438
845
  return weekendEnd[territory] != null ? weekendEnd[territory] : 0;
@@ -446,8 +853,14 @@ qx.Class.define("qx.locale.Date", {
446
853
  * @return {Boolean} whether the given day is a weekend day
447
854
  */
448
855
  isWeekend(day, locale) {
449
- var weekendStart = qx.locale.Date.getWeekendStart(locale);
450
- var weekendEnd = qx.locale.Date.getWeekendEnd(locale);
856
+ let intlLocale = this.__transformLocale(locale);
857
+ if (this.__isIntlWeekInfoSupported(intlLocale)) {
858
+ let info = new Intl.Locale(intlLocale).weekInfo;
859
+ return info.weekend.includes(day !== 0 ? day : 7);
860
+ }
861
+ // old implementation
862
+ const weekendStart = qx.locale.Date.getWeekendStart(locale);
863
+ const weekendEnd = qx.locale.Date.getWeekendEnd(locale);
451
864
 
452
865
  if (weekendEnd > weekendStart) {
453
866
  return day >= weekendStart && day <= weekendEnd;
@@ -472,30 +885,24 @@ qx.Class.define("qx.locale.Date", {
472
885
  return territory.toUpperCase();
473
886
  },
474
887
 
888
+ __isIntlWeekInfoSupported(locale){
889
+ return Intl.Locale && new Intl.Locale(locale).weekInfo;
890
+ },
891
+
475
892
  /**
476
- * Provide localization (CLDR) data with fallback between "format" and "stand-alone" contexts.
477
- * It is used in {@link #getDayName} and {@link #getMonthName} methods.
478
- *
479
- * @param context {String} intended context.
480
- * Possible values: "format", "stand-alone".
481
- * @param fallbackContext {String} the context used in case no localization is found for the key.
482
- * @param key {String} message id (may contain format strings)
483
- * @param locale {String} the locale
484
- * @return {String} localized name for the key
893
+ * Transforms an input locale into locale supported by Intl API
485
894
  *
895
+ * @param locale {String} optional locale to be used
896
+ * @returns {String} transformed locale
486
897
  */
487
- __localizeWithFallback(context, fallbackContext, key, locale) {
488
- var localizedString = this.__mgr.localize(key, [], locale);
489
- if (localizedString == key) {
490
- var newKey = key.replace(
491
- "_" + context + "_",
492
- "_" + fallbackContext + "_"
493
- );
494
-
495
- return this.__mgr.localize(newKey, [], locale);
496
- } else {
497
- return localizedString;
898
+ __transformLocale(locale) {
899
+ if (!locale) {
900
+ locale = this.__mgr.getLocale();
901
+ }
902
+ if (locale === "C") {
903
+ return "en";
498
904
  }
905
+ return locale.replace("_", "-").split('@')[0];
499
906
  }
500
907
  }
501
908
  });