@qooxdoo/framework 7.0.0-beta.1 → 7.0.0-beta.10

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 (1599) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/Manifest.json +2 -2
  3. package/README.md +9 -3
  4. package/bin/deploy/qx +0 -0
  5. package/lib/compiler/compile-info.json +45 -44
  6. package/lib/compiler/index.js +6600 -11001
  7. package/lib/resource/qx/tool/cli/templates/loader/loader-node.tmpl.js +3 -1
  8. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css +1 -1
  9. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -1
  10. package/lib/resource/qx/tool/cli/templates/template_vars.js +1 -1
  11. package/lib/resource/qx/tool/loadsass.js +16 -21
  12. package/lib/resource/qx/tool/schema/Manifest-1-0-0.json +1 -2
  13. package/lib/resource/qx/tool/schema/Manifest-2-0-0.json +1 -2
  14. package/lib/resource/qx/tool/schema/compile-1-0-0.json +16 -20
  15. package/lib/resource/qx/tool/website/build/assets/bluebird.min.js +4593 -9
  16. package/lib/resource/qx/tool/website/build/assets/buttons.js +391 -1
  17. package/lib/resource/qx/tool/website/build/assets/fontawesome-all.js +8963 -1
  18. package/lib/resource/qx/tool/website/build/assets/jquery.js +5452 -3
  19. package/lib/resource/qx/tool/website/build/diagnostics/dependson.js +31 -31
  20. package/lib/resource/qx/tool/website/build/diagnostics/requiredby.js +32 -36
  21. package/lib/resource/qx/tool/website/build/scripts/serve.js +87 -66
  22. package/lib/resource/qx/tool/website/src/assets/bluebird.min.js +4593 -9
  23. package/lib/resource/qx/tool/website/src/assets/buttons.js +391 -1
  24. package/lib/resource/qx/tool/website/src/assets/fontawesome-all.js +8963 -1
  25. package/lib/resource/qx/tool/website/src/assets/jquery.js +5452 -3
  26. package/lib/resource/qx/tool/website/src/diagnostics/dependson.js +31 -31
  27. package/lib/resource/qx/tool/website/src/diagnostics/requiredby.js +32 -36
  28. package/lib/resource/qx/tool/website/src/scripts/serve.js +87 -66
  29. package/npm-shrinkwrap.json +7293 -0
  30. package/package.json +29 -14
  31. package/source/class/q.js +4 -2
  32. package/source/class/qx/Annotation.js +48 -57
  33. package/source/class/qx/Bootstrap.js +206 -207
  34. package/source/class/qx/Class.js +602 -504
  35. package/source/class/qx/Interface.js +169 -137
  36. package/source/class/qx/Mixin.js +162 -120
  37. package/source/class/qx/Part.js +48 -77
  38. package/source/class/qx/Promise.js +5891 -4655
  39. package/source/class/qx/Theme.js +200 -134
  40. package/source/class/qx/__init__.js +8 -8
  41. package/source/class/qx/application/AbstractGui.js +20 -32
  42. package/source/class/qx/application/Basic.js +9 -18
  43. package/source/class/qx/application/IApplication.js +6 -10
  44. package/source/class/qx/application/Inline.js +4 -7
  45. package/source/class/qx/application/Mobile.js +22 -45
  46. package/source/class/qx/application/Native.js +8 -19
  47. package/source/class/qx/application/Routing.js +88 -114
  48. package/source/class/qx/application/Standalone.js +4 -9
  49. package/source/class/qx/application/__init__.js +1 -1
  50. package/source/class/qx/bom/AnimationFrame.js +26 -25
  51. package/source/class/qx/bom/Blocker.js +92 -100
  52. package/source/class/qx/bom/Cookie.js +18 -22
  53. package/source/class/qx/bom/Document.js +24 -31
  54. package/source/class/qx/bom/Element.js +65 -51
  55. package/source/class/qx/bom/Event.js +68 -78
  56. package/source/class/qx/bom/FileReader.js +110 -115
  57. package/source/class/qx/bom/Font.js +82 -122
  58. package/source/class/qx/bom/FullScreen.js +32 -41
  59. package/source/class/qx/bom/GeoLocation.js +39 -44
  60. package/source/class/qx/bom/HashHistory.js +58 -64
  61. package/source/class/qx/bom/History.js +61 -89
  62. package/source/class/qx/bom/Html.js +75 -71
  63. package/source/class/qx/bom/IdleCallback.js +20 -23
  64. package/source/class/qx/bom/Iframe.js +37 -69
  65. package/source/class/qx/bom/IframeHistory.js +83 -88
  66. package/source/class/qx/bom/Input.js +50 -66
  67. package/source/class/qx/bom/Label.js +65 -86
  68. package/source/class/qx/bom/Lifecycle.js +7 -9
  69. package/source/class/qx/bom/MediaQuery.js +324 -307
  70. package/source/class/qx/bom/NativeHistory.js +51 -46
  71. package/source/class/qx/bom/Notification.js +41 -47
  72. package/source/class/qx/bom/PageVisibility.js +19 -25
  73. package/source/class/qx/bom/Range.js +20 -30
  74. package/source/class/qx/bom/Selection.js +163 -172
  75. package/source/class/qx/bom/Selector.js +2401 -2181
  76. package/source/class/qx/bom/Shortcut.js +103 -129
  77. package/source/class/qx/bom/Storage.js +9 -8
  78. package/source/class/qx/bom/String.js +285 -290
  79. package/source/class/qx/bom/Style.js +30 -31
  80. package/source/class/qx/bom/Stylesheet.js +36 -60
  81. package/source/class/qx/bom/Template.js +730 -657
  82. package/source/class/qx/bom/Viewport.js +40 -46
  83. package/source/class/qx/bom/Vml.js +43 -28
  84. package/source/class/qx/bom/WebWorker.js +61 -50
  85. package/source/class/qx/bom/Window.js +88 -105
  86. package/source/class/qx/bom/__init__.js +11 -11
  87. package/source/class/qx/bom/client/Browser.js +45 -47
  88. package/source/class/qx/bom/client/Css.js +85 -85
  89. package/source/class/qx/bom/client/CssAnimation.js +41 -49
  90. package/source/class/qx/bom/client/CssTransform.js +21 -29
  91. package/source/class/qx/bom/client/CssTransition.js +9 -12
  92. package/source/class/qx/bom/client/Device.js +45 -45
  93. package/source/class/qx/bom/client/EcmaScript.js +153 -96
  94. package/source/class/qx/bom/client/Engine.js +38 -35
  95. package/source/class/qx/bom/client/Event.js +75 -63
  96. package/source/class/qx/bom/client/Html.js +97 -97
  97. package/source/class/qx/bom/client/Idle.js +4 -6
  98. package/source/class/qx/bom/client/Locale.js +15 -15
  99. package/source/class/qx/bom/client/OperatingSystem.js +89 -106
  100. package/source/class/qx/bom/client/Pdfjs.js +1364 -1067
  101. package/source/class/qx/bom/client/PhoneGap.js +6 -9
  102. package/source/class/qx/bom/client/Plugin.js +93 -97
  103. package/source/class/qx/bom/client/Runtime.js +14 -12
  104. package/source/class/qx/bom/client/Scroll.js +20 -16
  105. package/source/class/qx/bom/client/Stylesheet.js +44 -32
  106. package/source/class/qx/bom/client/Transport.js +38 -41
  107. package/source/class/qx/bom/client/Xml.js +39 -41
  108. package/source/class/qx/bom/client/__init__.js +4 -4
  109. package/source/class/qx/bom/element/Animation.js +15 -12
  110. package/source/class/qx/bom/element/AnimationCss.js +95 -64
  111. package/source/class/qx/bom/element/AnimationHandle.js +22 -29
  112. package/source/class/qx/bom/element/AnimationJs.js +94 -71
  113. package/source/class/qx/bom/element/Attribute.js +119 -134
  114. package/source/class/qx/bom/element/Background.js +35 -35
  115. package/source/class/qx/bom/element/BoxSizing.js +43 -44
  116. package/source/class/qx/bom/element/Class.js +50 -72
  117. package/source/class/qx/bom/element/Clip.js +36 -60
  118. package/source/class/qx/bom/element/Cursor.js +13 -20
  119. package/source/class/qx/bom/element/Dataset.js +33 -31
  120. package/source/class/qx/bom/element/Decoration.js +178 -168
  121. package/source/class/qx/bom/element/Dimension.js +78 -60
  122. package/source/class/qx/bom/element/Location.js +87 -94
  123. package/source/class/qx/bom/element/Opacity.js +42 -44
  124. package/source/class/qx/bom/element/Scroll.js +78 -88
  125. package/source/class/qx/bom/element/Style.js +61 -101
  126. package/source/class/qx/bom/element/Transform.js +38 -56
  127. package/source/class/qx/bom/element/__init__.js +4 -4
  128. package/source/class/qx/bom/media/Abstract.js +136 -143
  129. package/source/class/qx/bom/media/Audio.js +7 -12
  130. package/source/class/qx/bom/media/Video.js +15 -27
  131. package/source/class/qx/bom/request/IRequest.js +18 -21
  132. package/source/class/qx/bom/request/Jsonp.js +34 -39
  133. package/source/class/qx/bom/request/Script.js +94 -90
  134. package/source/class/qx/bom/request/SimpleXhr.js +111 -79
  135. package/source/class/qx/bom/request/Xhr.js +196 -143
  136. package/source/class/qx/bom/request/__init__.js +1 -1
  137. package/source/class/qx/bom/rest/Resource.js +269 -203
  138. package/source/class/qx/bom/storage/Memory.js +18 -29
  139. package/source/class/qx/bom/storage/UserData.js +28 -35
  140. package/source/class/qx/bom/storage/Web.js +19 -30
  141. package/source/class/qx/bom/webfonts/Manager.js +199 -130
  142. package/source/class/qx/bom/webfonts/Validator.js +84 -118
  143. package/source/class/qx/bom/webfonts/WebFont.js +24 -28
  144. package/source/class/qx/bom/webfonts/__init__.js +1 -1
  145. package/source/class/qx/core/Aspect.js +15 -22
  146. package/source/class/qx/core/Assert.js +391 -333
  147. package/source/class/qx/core/AssertionError.js +6 -15
  148. package/source/class/qx/core/BaseInit.js +25 -28
  149. package/source/class/qx/core/Environment.js +72 -86
  150. package/source/class/qx/core/GlobalError.js +12 -20
  151. package/source/class/qx/core/IDisposable.js +6 -9
  152. package/source/class/qx/core/Id.js +25 -15
  153. package/source/class/qx/core/Init.js +20 -20
  154. package/source/class/qx/core/MAssert.js +54 -97
  155. package/source/class/qx/core/MBindTo.js +10 -14
  156. package/source/class/qx/core/MEvent.js +76 -65
  157. package/source/class/qx/core/MLogging.js +9 -18
  158. package/source/class/qx/core/MObjectId.js +104 -65
  159. package/source/class/qx/core/MProperty.js +18 -34
  160. package/source/class/qx/core/Object.js +93 -122
  161. package/source/class/qx/core/ObjectRegistry.js +58 -81
  162. package/source/class/qx/core/Property.js +974 -780
  163. package/source/class/qx/core/ValidationError.js +3 -4
  164. package/source/class/qx/core/WindowError.js +13 -24
  165. package/source/class/qx/core/Wrapper.js +8 -9
  166. package/source/class/qx/data/Array.js +178 -191
  167. package/source/class/qx/data/Conversion.js +11 -18
  168. package/source/class/qx/data/IListData.js +11 -20
  169. package/source/class/qx/data/MBinding.js +31 -26
  170. package/source/class/qx/data/SingleValueBinding.js +491 -225
  171. package/source/class/qx/data/__init__.js +1 -1
  172. package/source/class/qx/data/controller/CheckedList.js +82 -54
  173. package/source/class/qx/data/controller/Form.js +81 -69
  174. package/source/class/qx/data/controller/IControllerDelegate.js +7 -12
  175. package/source/class/qx/data/controller/ISelection.js +6 -10
  176. package/source/class/qx/data/controller/List.js +151 -167
  177. package/source/class/qx/data/controller/MSelection.js +53 -72
  178. package/source/class/qx/data/controller/Object.js +106 -77
  179. package/source/class/qx/data/controller/Tree.js +164 -142
  180. package/source/class/qx/data/controller/__init__.js +1 -1
  181. package/source/class/qx/data/controller/website/List.js +34 -43
  182. package/source/class/qx/data/controller/website/__init__.js +2 -2
  183. package/source/class/qx/data/marshal/IMarshaler.js +4 -7
  184. package/source/class/qx/data/marshal/IMarshalerDelegate.js +10 -18
  185. package/source/class/qx/data/marshal/Json.js +112 -85
  186. package/source/class/qx/data/marshal/MEventBubbling.js +44 -42
  187. package/source/class/qx/data/marshal/__init__.js +1 -1
  188. package/source/class/qx/data/store/IStoreDelegate.js +6 -9
  189. package/source/class/qx/data/store/Json.js +71 -85
  190. package/source/class/qx/data/store/Jsonp.js +19 -25
  191. package/source/class/qx/data/store/Offline.js +21 -29
  192. package/source/class/qx/data/store/Rest.js +25 -23
  193. package/source/class/qx/data/store/__init__.js +1 -1
  194. package/source/class/qx/dev/Debug.js +105 -124
  195. package/source/class/qx/dev/FakeServer.js +68 -65
  196. package/source/class/qx/dev/ObjectSummary.js +33 -39
  197. package/source/class/qx/dev/Profile.js +62 -63
  198. package/source/class/qx/dev/StackTrace.js +64 -70
  199. package/source/class/qx/dev/Tokenizer.js +114 -126
  200. package/source/class/qx/dev/unit/AbstractTestSuite.js +17 -31
  201. package/source/class/qx/dev/unit/AsyncWrapper.js +22 -26
  202. package/source/class/qx/dev/unit/JsUnitTestResult.js +9 -21
  203. package/source/class/qx/dev/unit/MMeasure.js +46 -37
  204. package/source/class/qx/dev/unit/MMock.js +236 -240
  205. package/source/class/qx/dev/unit/MRequirements.js +53 -79
  206. package/source/class/qx/dev/unit/MRequirementsBasic.js +24 -19
  207. package/source/class/qx/dev/unit/MTestLoader.js +52 -57
  208. package/source/class/qx/dev/unit/MeasurementResult.js +18 -22
  209. package/source/class/qx/dev/unit/RequirementError.js +8 -17
  210. package/source/class/qx/dev/unit/Sinon.js +18826 -4613
  211. package/source/class/qx/dev/unit/TestCase.js +40 -51
  212. package/source/class/qx/dev/unit/TestClass.js +22 -23
  213. package/source/class/qx/dev/unit/TestFunction.js +28 -48
  214. package/source/class/qx/dev/unit/TestLoader.js +11 -14
  215. package/source/class/qx/dev/unit/TestLoaderBasic.js +3 -6
  216. package/source/class/qx/dev/unit/TestLoaderInline.js +8 -14
  217. package/source/class/qx/dev/unit/TestLoaderMobile.js +8 -14
  218. package/source/class/qx/dev/unit/TestLoaderNative.js +7 -13
  219. package/source/class/qx/dev/unit/TestResult.js +140 -118
  220. package/source/class/qx/dev/unit/TestSuite.js +46 -55
  221. package/source/class/qx/dom/Element.js +29 -74
  222. package/source/class/qx/dom/Hierarchy.js +60 -95
  223. package/source/class/qx/dom/Node.js +54 -81
  224. package/source/class/qx/dom/__init__.js +9 -9
  225. package/source/class/qx/event/AcceleratingTimer.js +28 -46
  226. package/source/class/qx/event/Emitter.js +54 -49
  227. package/source/class/qx/event/GlobalError.js +22 -38
  228. package/source/class/qx/event/IEventDispatcher.js +4 -9
  229. package/source/class/qx/event/IEventHandler.js +7 -13
  230. package/source/class/qx/event/Idle.js +32 -47
  231. package/source/class/qx/event/Manager.js +222 -237
  232. package/source/class/qx/event/Messaging.js +55 -48
  233. package/source/class/qx/event/Pool.js +5 -8
  234. package/source/class/qx/event/Registration.js +128 -118
  235. package/source/class/qx/event/Timer.js +50 -96
  236. package/source/class/qx/event/Utils.js +41 -28
  237. package/source/class/qx/event/dispatch/AbstractBubbling.js +133 -93
  238. package/source/class/qx/event/dispatch/Direct.js +46 -51
  239. package/source/class/qx/event/dispatch/DomBubbling.js +8 -15
  240. package/source/class/qx/event/dispatch/MouseCapture.js +74 -91
  241. package/source/class/qx/event/handler/Appear.js +40 -77
  242. package/source/class/qx/event/handler/Application.js +100 -126
  243. package/source/class/qx/event/handler/Capture.js +15 -37
  244. package/source/class/qx/event/handler/DragDrop.js +342 -228
  245. package/source/class/qx/event/handler/Element.js +45 -72
  246. package/source/class/qx/event/handler/ElementResize.js +35 -70
  247. package/source/class/qx/event/handler/Focus.js +908 -637
  248. package/source/class/qx/event/handler/Gesture.js +144 -93
  249. package/source/class/qx/event/handler/GestureCore.js +214 -163
  250. package/source/class/qx/event/handler/Iframe.js +21 -35
  251. package/source/class/qx/event/handler/Input.js +332 -209
  252. package/source/class/qx/event/handler/Keyboard.js +325 -270
  253. package/source/class/qx/event/handler/Mouse.js +212 -173
  254. package/source/class/qx/event/handler/Object.js +13 -31
  255. package/source/class/qx/event/handler/Offline.js +52 -67
  256. package/source/class/qx/event/handler/Orientation.js +56 -62
  257. package/source/class/qx/event/handler/OrientationCore.js +33 -43
  258. package/source/class/qx/event/handler/Pointer.js +84 -72
  259. package/source/class/qx/event/handler/PointerCore.js +183 -105
  260. package/source/class/qx/event/handler/Touch.js +43 -59
  261. package/source/class/qx/event/handler/TouchCore.js +159 -120
  262. package/source/class/qx/event/handler/Transition.js +91 -100
  263. package/source/class/qx/event/handler/UserAction.js +18 -42
  264. package/source/class/qx/event/handler/Video.js +12 -12
  265. package/source/class/qx/event/handler/Window.js +53 -69
  266. package/source/class/qx/event/message/Bus.js +109 -128
  267. package/source/class/qx/event/message/Message.js +14 -29
  268. package/source/class/qx/event/type/Data.js +11 -22
  269. package/source/class/qx/event/type/Dom.js +37 -52
  270. package/source/class/qx/event/type/Drag.js +37 -56
  271. package/source/class/qx/event/type/Event.js +80 -104
  272. package/source/class/qx/event/type/Focus.js +5 -8
  273. package/source/class/qx/event/type/GeoPosition.js +32 -41
  274. package/source/class/qx/event/type/KeyInput.js +9 -19
  275. package/source/class/qx/event/type/KeySequence.js +10 -21
  276. package/source/class/qx/event/type/Mouse.js +69 -72
  277. package/source/class/qx/event/type/MouseWheel.js +5 -9
  278. package/source/class/qx/event/type/Native.js +16 -27
  279. package/source/class/qx/event/type/Orientation.js +18 -30
  280. package/source/class/qx/event/type/Pinch.js +21 -27
  281. package/source/class/qx/event/type/Pointer.js +38 -41
  282. package/source/class/qx/event/type/Rest.js +7 -10
  283. package/source/class/qx/event/type/Roll.js +49 -58
  284. package/source/class/qx/event/type/Rotate.js +21 -27
  285. package/source/class/qx/event/type/Swipe.js +75 -86
  286. package/source/class/qx/event/type/Tap.js +2 -4
  287. package/source/class/qx/event/type/Touch.js +262 -286
  288. package/source/class/qx/event/type/Track.js +23 -28
  289. package/source/class/qx/event/type/dom/Custom.js +24 -20
  290. package/source/class/qx/event/type/dom/Pointer.js +86 -60
  291. package/source/class/qx/event/util/Keyboard.js +94 -106
  292. package/source/class/qx/html/Blocker.js +17 -18
  293. package/source/class/qx/html/Canvas.js +13 -29
  294. package/source/class/qx/html/Element.js +372 -497
  295. package/source/class/qx/html/Factory.js +31 -26
  296. package/source/class/qx/html/Iframe.js +35 -69
  297. package/source/class/qx/html/Image.js +43 -55
  298. package/source/class/qx/html/Input.js +44 -57
  299. package/source/class/qx/html/Jsx.js +49 -41
  300. package/source/class/qx/html/JsxRef.js +3 -5
  301. package/source/class/qx/html/Label.js +20 -32
  302. package/source/class/qx/html/Node.js +362 -422
  303. package/source/class/qx/html/Root.js +7 -16
  304. package/source/class/qx/html/Text.js +34 -27
  305. package/source/class/qx/io/ImageLoader.js +66 -90
  306. package/source/class/qx/io/PartLoader.js +17 -30
  307. package/source/class/qx/io/__init__.js +5 -3
  308. package/source/class/qx/io/exception/Cancel.js +33 -0
  309. package/source/class/qx/io/exception/Exception.js +37 -0
  310. package/source/class/qx/{tool/compiler/Version.js → io/exception/Protocol.js} +12 -7
  311. package/source/class/qx/io/exception/Transport.js +38 -0
  312. package/source/class/qx/io/exception/__init__.js +4 -0
  313. package/source/class/qx/io/graphql/Client.js +122 -0
  314. package/source/class/qx/io/graphql/__init__.js +9 -0
  315. package/source/class/qx/io/graphql/protocol/Message.js +65 -0
  316. package/source/class/qx/io/graphql/protocol/Request.js +93 -0
  317. package/source/class/qx/io/graphql/protocol/Response.js +63 -0
  318. package/source/class/qx/io/graphql/protocol/__init__.js +6 -0
  319. package/source/class/qx/io/jsonrpc/Client.js +355 -0
  320. package/source/class/qx/io/jsonrpc/__init__.js +15 -0
  321. package/source/class/qx/io/jsonrpc/protocol/Batch.js +103 -0
  322. package/source/class/qx/io/jsonrpc/protocol/Error.js +65 -0
  323. package/source/class/qx/io/jsonrpc/protocol/Message.js +48 -0
  324. package/source/class/qx/io/jsonrpc/protocol/Notification.js +47 -0
  325. package/source/class/qx/io/jsonrpc/protocol/Parser.js +105 -0
  326. package/source/class/qx/io/jsonrpc/protocol/Request.js +94 -0
  327. package/source/class/qx/io/jsonrpc/protocol/Result.js +49 -0
  328. package/source/class/qx/io/jsonrpc/protocol/__init__.js +5 -0
  329. package/source/class/qx/io/part/ClosurePart.js +16 -35
  330. package/source/class/qx/io/part/Package.js +35 -63
  331. package/source/class/qx/io/part/Part.js +29 -53
  332. package/source/class/qx/io/part/__init__.js +4 -4
  333. package/source/class/qx/io/request/AbstractRequest.js +268 -201
  334. package/source/class/qx/io/request/Jsonp.js +16 -19
  335. package/source/class/qx/io/request/Xhr.js +38 -37
  336. package/source/class/qx/io/request/__init__.js +1 -1
  337. package/source/class/qx/io/request/authentication/Basic.js +7 -13
  338. package/source/class/qx/io/request/authentication/Bearer.js +46 -0
  339. package/source/class/qx/io/request/authentication/IAuthentication.js +3 -6
  340. package/source/class/qx/io/request/authentication/__init__.js +1 -1
  341. package/source/class/qx/io/rest/Resource.js +122 -90
  342. package/source/class/qx/io/transport/AbstractClient.js +121 -0
  343. package/source/class/qx/io/transport/AbstractTransport.js +40 -0
  344. package/source/class/qx/io/transport/Fetch.js +98 -0
  345. package/source/class/qx/io/transport/ITransport.js +42 -0
  346. package/source/class/qx/io/transport/PostMessage.js +54 -0
  347. package/source/class/qx/io/transport/Websocket.js +97 -0
  348. package/source/class/qx/io/transport/Xhr.js +138 -0
  349. package/source/class/qx/io/transport/__init__.js +18 -0
  350. package/source/class/qx/lang/Array.js +133 -170
  351. package/source/class/qx/lang/Function.js +101 -104
  352. package/source/class/qx/lang/Json.js +1041 -774
  353. package/source/class/qx/lang/Number.js +11 -16
  354. package/source/class/qx/lang/Object.js +129 -100
  355. package/source/class/qx/lang/String.js +86 -94
  356. package/source/class/qx/lang/Type.js +44 -65
  357. package/source/class/qx/lang/normalize/Array.js +39 -49
  358. package/source/class/qx/lang/normalize/Date.js +50 -32
  359. package/source/class/qx/lang/normalize/Error.js +4 -7
  360. package/source/class/qx/lang/normalize/Function.js +11 -19
  361. package/source/class/qx/lang/normalize/Number.js +3 -5
  362. package/source/class/qx/lang/normalize/Object.js +17 -18
  363. package/source/class/qx/lang/normalize/String.js +39 -40
  364. package/source/class/qx/locale/Date.js +175 -178
  365. package/source/class/qx/locale/Key.js +13 -11
  366. package/source/class/qx/locale/LocalizedString.js +18 -15
  367. package/source/class/qx/locale/MTranslation.js +22 -23
  368. package/source/class/qx/locale/Manager.js +62 -100
  369. package/source/class/qx/locale/Number.js +20 -12
  370. package/source/class/qx/locale/String.js +26 -15
  371. package/source/class/qx/log/Logger.js +128 -180
  372. package/source/class/qx/log/__init__.js +3 -3
  373. package/source/class/qx/log/appender/Console.js +100 -111
  374. package/source/class/qx/log/appender/Element.js +25 -39
  375. package/source/class/qx/log/appender/Formatter.js +117 -66
  376. package/source/class/qx/log/appender/Native.js +4 -10
  377. package/source/class/qx/log/appender/NodeConsole.js +20 -28
  378. package/source/class/qx/log/appender/PhoneGap.js +5 -13
  379. package/source/class/qx/log/appender/RhinoConsole.js +12 -23
  380. package/source/class/qx/log/appender/RhinoFile.js +19 -26
  381. package/source/class/qx/log/appender/RingBuffer.js +10 -19
  382. package/source/class/qx/log/appender/Util.js +11 -9
  383. package/source/class/qx/module/Animation.js +73 -63
  384. package/source/class/qx/module/Attribute.js +27 -46
  385. package/source/class/qx/module/Blocker.js +33 -41
  386. package/source/class/qx/module/Cookie.js +6 -10
  387. package/source/class/qx/module/Css.js +82 -97
  388. package/source/class/qx/module/Dataset.js +12 -24
  389. package/source/class/qx/module/Environment.js +4 -6
  390. package/source/class/qx/module/Event.js +124 -127
  391. package/source/class/qx/module/Io.js +5 -9
  392. package/source/class/qx/module/Manipulating.js +98 -117
  393. package/source/class/qx/module/MatchMedia.js +50 -24
  394. package/source/class/qx/module/Messaging.js +6 -10
  395. package/source/class/qx/module/Placeholder.js +54 -44
  396. package/source/class/qx/module/Placement.js +33 -33
  397. package/source/class/qx/module/Rest.js +3 -4
  398. package/source/class/qx/module/Storage.js +34 -48
  399. package/source/class/qx/module/Template.js +6 -9
  400. package/source/class/qx/module/TextSelection.js +13 -21
  401. package/source/class/qx/module/Transform.js +28 -45
  402. package/source/class/qx/module/Traversing.js +160 -154
  403. package/source/class/qx/module/__init__.js +1 -1
  404. package/source/class/qx/module/dev/FakeServer.js +19 -25
  405. package/source/class/qx/module/event/GestureHandler.js +25 -13
  406. package/source/class/qx/module/event/Keyboard.js +42 -31
  407. package/source/class/qx/module/event/Mouse.js +48 -46
  408. package/source/class/qx/module/event/Native.js +18 -30
  409. package/source/class/qx/module/event/Orientation.js +11 -18
  410. package/source/class/qx/module/event/OrientationHandler.js +19 -17
  411. package/source/class/qx/module/event/Pinch.js +13 -14
  412. package/source/class/qx/module/event/Pointer.js +22 -22
  413. package/source/class/qx/module/event/PointerHandler.js +14 -11
  414. package/source/class/qx/module/event/Rotate.js +13 -14
  415. package/source/class/qx/module/event/Swipe.js +18 -24
  416. package/source/class/qx/module/event/Tap.js +25 -25
  417. package/source/class/qx/module/event/Touch.js +4 -7
  418. package/source/class/qx/module/event/TouchHandler.js +16 -16
  419. package/source/class/qx/module/event/Track.js +13 -14
  420. package/source/class/qx/module/util/Array.js +30 -41
  421. package/source/class/qx/module/util/Function.js +1 -2
  422. package/source/class/qx/module/util/Object.js +8 -11
  423. package/source/class/qx/module/util/String.js +10 -18
  424. package/source/class/qx/module/util/Type.js +3 -4
  425. package/source/class/qx/test/Annotation.js +195 -89
  426. package/source/class/qx/test/Bootstrap.js +98 -124
  427. package/source/class/qx/test/Browser.js +8 -11
  428. package/source/class/qx/test/Class.js +164 -198
  429. package/source/class/qx/test/Dom.js +10 -28
  430. package/source/class/qx/test/EditDistance.js +16 -16
  431. package/source/class/qx/test/Interface.js +380 -383
  432. package/source/class/qx/test/MAppearance.js +10 -14
  433. package/source/class/qx/test/MDecoration.js +1 -3
  434. package/source/class/qx/test/Mixin.js +449 -173
  435. package/source/class/qx/test/Promise.js +422 -333
  436. package/source/class/qx/test/Theme.js +204 -179
  437. package/source/class/qx/test/Xml.js +155 -84
  438. package/source/class/qx/test/application/Routing.js +45 -44
  439. package/source/class/qx/test/bom/AnimationFrame.js +23 -21
  440. package/source/class/qx/test/bom/Attribute.js +66 -47
  441. package/source/class/qx/test/bom/Basic.js +52 -27
  442. package/source/class/qx/test/bom/Blocker.js +100 -70
  443. package/source/class/qx/test/bom/Class.js +19 -34
  444. package/source/class/qx/test/bom/Cookie.js +49 -28
  445. package/source/class/qx/test/bom/Dataset.js +12 -24
  446. package/source/class/qx/test/bom/Element.js +55 -47
  447. package/source/class/qx/test/bom/Event.js +68 -45
  448. package/source/class/qx/test/bom/FileReader.js +6 -12
  449. package/source/class/qx/test/bom/Font.js +256 -118
  450. package/source/class/qx/test/bom/GeoLocation.js +82 -64
  451. package/source/class/qx/test/bom/History.js +63 -84
  452. package/source/class/qx/test/bom/IdleCallback.js +51 -38
  453. package/source/class/qx/test/bom/Iframe.js +14 -18
  454. package/source/class/qx/test/bom/Label.js +74 -105
  455. package/source/class/qx/test/bom/Location.js +70 -99
  456. package/source/class/qx/test/bom/PageVisibility.js +13 -16
  457. package/source/class/qx/test/bom/Selector.js +16 -16
  458. package/source/class/qx/test/bom/String.js +19 -15
  459. package/source/class/qx/test/bom/Stylesheet.js +39 -48
  460. package/source/class/qx/test/bom/Template.js +49 -57
  461. package/source/class/qx/test/bom/Viewport.js +7 -11
  462. package/source/class/qx/test/bom/WebWorker.js +49 -37
  463. package/source/class/qx/test/bom/Window.js +6 -12
  464. package/source/class/qx/test/bom/client/Css.js +26 -19
  465. package/source/class/qx/test/bom/client/Device.js +29 -18
  466. package/source/class/qx/test/bom/client/OperatingSystem.js +17 -20
  467. package/source/class/qx/test/bom/client/Pdfjs.js +15 -13
  468. package/source/class/qx/test/bom/element/AnimationHandle.js +20 -17
  469. package/source/class/qx/test/bom/element/AnimationJs.js +48 -31
  470. package/source/class/qx/test/bom/element/Background.js +93 -46
  471. package/source/class/qx/test/bom/element/BoxSizing.js +66 -61
  472. package/source/class/qx/test/bom/element/Class.js +33 -58
  473. package/source/class/qx/test/bom/element/Dimension.js +58 -37
  474. package/source/class/qx/test/bom/element/Style.js +87 -83
  475. package/source/class/qx/test/bom/element/Transform.js +209 -86
  476. package/source/class/qx/test/bom/media/Audio.js +18 -14
  477. package/source/class/qx/test/bom/media/MediaTestCase.js +61 -66
  478. package/source/class/qx/test/bom/media/Video.js +39 -28
  479. package/source/class/qx/test/bom/request/Jsonp.js +60 -57
  480. package/source/class/qx/test/bom/request/Script.js +150 -138
  481. package/source/class/qx/test/bom/request/SimpleXhr.js +206 -134
  482. package/source/class/qx/test/bom/request/Xhr.js +179 -132
  483. package/source/class/qx/test/bom/request/XhrWithRemote.js +206 -160
  484. package/source/class/qx/test/bom/rest/Resource.js +345 -281
  485. package/source/class/qx/test/bom/rest/ResourceWithRemote.js +74 -57
  486. package/source/class/qx/test/bom/storage/Local.js +3 -4
  487. package/source/class/qx/test/bom/storage/Session.js +3 -4
  488. package/source/class/qx/test/bom/storage/WebStorageTestCase.js +28 -27
  489. package/source/class/qx/test/bom/webfonts/Abstract.js +8 -10
  490. package/source/class/qx/test/bom/webfonts/Manager.js +127 -80
  491. package/source/class/qx/test/bom/webfonts/Validator.js +36 -30
  492. package/source/class/qx/test/compiler/ClassFile.js +29 -11
  493. package/source/class/qx/test/compiler/jsdoc/Parser.js +122 -96
  494. package/source/class/qx/test/core/Assert.js +151 -86
  495. package/source/class/qx/test/core/Environment.js +162 -123
  496. package/source/class/qx/test/core/EventEmitterDummy.js +7 -8
  497. package/source/class/qx/test/core/InheritanceDummy.js +23 -33
  498. package/source/class/qx/test/core/MemoryManagement.js +13 -5
  499. package/source/class/qx/test/core/Object.js +106 -112
  500. package/source/class/qx/test/core/ObjectId.js +7 -6
  501. package/source/class/qx/test/core/Property.js +483 -387
  502. package/source/class/qx/test/core/PropertyHelper.js +49 -64
  503. package/source/class/qx/test/core/Target.js +9 -13
  504. package/source/class/qx/test/core/Validation.js +409 -136
  505. package/source/class/qx/test/data/DataArray.js +1059 -394
  506. package/source/class/qx/test/data/DataArrayWithChangeBubble.js +315 -172
  507. package/source/class/qx/test/data/__init__.js +4 -4
  508. package/source/class/qx/test/data/controller/Form.js +141 -99
  509. package/source/class/qx/test/data/controller/FormWithArrayAndModel.js +66 -51
  510. package/source/class/qx/test/data/controller/List.js +644 -336
  511. package/source/class/qx/test/data/controller/ListReverse.js +64 -63
  512. package/source/class/qx/test/data/controller/ListWithObjects.js +305 -149
  513. package/source/class/qx/test/data/controller/Object.js +252 -94
  514. package/source/class/qx/test/data/controller/Tree.js +1219 -383
  515. package/source/class/qx/test/data/controller/__init__.js +4 -4
  516. package/source/class/qx/test/data/marshal/Json.js +832 -447
  517. package/source/class/qx/test/data/marshal/__init__.js +4 -4
  518. package/source/class/qx/test/data/singlevalue/Array.js +383 -144
  519. package/source/class/qx/test/data/singlevalue/Deep.js +361 -175
  520. package/source/class/qx/test/data/singlevalue/Resolve.js +51 -29
  521. package/source/class/qx/test/data/singlevalue/Simple.js +530 -208
  522. package/source/class/qx/test/data/singlevalue/TextFieldDummy.js +32 -28
  523. package/source/class/qx/test/data/singlevalue/__init__.js +4 -4
  524. package/source/class/qx/test/data/store/Json.js +574 -313
  525. package/source/class/qx/test/data/store/Jsonp.js +103 -77
  526. package/source/class/qx/test/data/store/Offline.js +127 -110
  527. package/source/class/qx/test/data/store/Rest.js +58 -52
  528. package/source/class/qx/test/data/store/RestWithRemote.js +36 -30
  529. package/source/class/qx/test/data/store/__init__.js +4 -4
  530. package/source/class/qx/test/dev/Debug.js +9 -13
  531. package/source/class/qx/test/dev/StackTrace.js +51 -42
  532. package/source/class/qx/test/dev/unit/Requirements.js +36 -49
  533. package/source/class/qx/test/dev/unit/Sinon.js +85 -73
  534. package/source/class/qx/test/dev/unit/TestCase.js +12 -17
  535. package/source/class/qx/test/dom/Element.js +17 -12
  536. package/source/class/qx/test/dom/Hierarchy.js +53 -38
  537. package/source/class/qx/test/dom/Node.js +97 -43
  538. package/source/class/qx/test/event/Bubbling.js +258 -88
  539. package/source/class/qx/test/event/Emitter.js +38 -39
  540. package/source/class/qx/test/event/GlobalError.js +59 -87
  541. package/source/class/qx/test/event/GlobalEventMonitors.js +22 -25
  542. package/source/class/qx/test/event/Messaging.js +66 -49
  543. package/source/class/qx/test/event/MockBubblingHandler.js +10 -15
  544. package/source/class/qx/test/event/MockHandler.js +14 -33
  545. package/source/class/qx/test/event/Registration.js +38 -32
  546. package/source/class/qx/test/event/Timer.js +61 -39
  547. package/source/class/qx/test/event/Utils.js +164 -123
  548. package/source/class/qx/test/event/dispatch/MouseCapture.js +61 -51
  549. package/source/class/qx/test/event/dispatch/MouseEventOnDocument.js +22 -23
  550. package/source/class/qx/test/event/dispatch/TestingHandler.js +8 -10
  551. package/source/class/qx/test/event/dispatch/TestingWindow.js +9 -13
  552. package/source/class/qx/test/event/dispatch/__init__.js +4 -4
  553. package/source/class/qx/test/event/handler/Offline.js +7 -8
  554. package/source/class/qx/test/event/message/Bus.js +112 -72
  555. package/source/class/qx/test/event/message/__init__.js +4 -4
  556. package/source/class/qx/test/event/type/Dom.js +12 -11
  557. package/source/class/qx/test/event/type/Event.js +7 -16
  558. package/source/class/qx/test/event/type/Mouse.js +12 -11
  559. package/source/class/qx/test/event/type/Native.js +12 -11
  560. package/source/class/qx/test/event/type/__init__.js +4 -4
  561. package/source/class/qx/test/event/util/Keyboard.js +4 -3
  562. package/source/class/qx/test/html/Element.js +538 -239
  563. package/source/class/qx/test/html/Iframe.js +85 -73
  564. package/source/class/qx/test/html/jsx/TestJsx.js +15 -4
  565. package/source/class/qx/test/html/jsx/TestJsxBrowser.js +37 -19
  566. package/source/class/qx/test/html/jsx/TestWidget.js +26 -26
  567. package/source/class/qx/test/io/ImageLoader.js +256 -160
  568. package/source/class/qx/test/io/MAssert.js +46 -0
  569. package/source/class/qx/test/io/MRemoteTest.js +9 -11
  570. package/source/class/qx/test/io/__init__.js +4 -4
  571. package/source/class/qx/test/io/graphql/Client.js +190 -0
  572. package/source/class/qx/test/io/graphql/ClientFetch.js +34 -0
  573. package/source/class/qx/test/io/graphql/Request.js +41 -0
  574. package/source/class/qx/test/io/jsonrpc/Client.js +333 -0
  575. package/source/class/qx/test/io/jsonrpc/Protocol.js +108 -0
  576. package/source/class/qx/test/io/request/Jsonp.js +23 -20
  577. package/source/class/qx/test/io/request/JsonpWithRemote.js +25 -22
  578. package/source/class/qx/test/io/request/MRequest.js +137 -114
  579. package/source/class/qx/test/io/request/Xhr.js +367 -209
  580. package/source/class/qx/test/io/request/XhrWithRemote.js +133 -100
  581. package/source/class/qx/test/io/rest/Resource.js +325 -270
  582. package/source/class/qx/test/io/rest/ResourceWithRemote.js +75 -58
  583. package/source/class/qx/test/io/transport/PostMessage.js +56 -0
  584. package/source/class/qx/test/io/transport/Websocket.js +64 -0
  585. package/source/class/qx/test/lang/Array.js +79 -105
  586. package/source/class/qx/test/lang/Function.js +64 -53
  587. package/source/class/qx/test/lang/Json.js +51 -79
  588. package/source/class/qx/test/lang/Number.js +4 -6
  589. package/source/class/qx/test/lang/Object.js +143 -133
  590. package/source/class/qx/test/lang/String.js +151 -95
  591. package/source/class/qx/test/lang/Type.js +34 -44
  592. package/source/class/qx/test/lang/Webkit.js +8 -13
  593. package/source/class/qx/test/lang/normalize/Array.js +121 -68
  594. package/source/class/qx/test/lang/normalize/Date.js +232 -49
  595. package/source/class/qx/test/lang/normalize/Error.js +5 -8
  596. package/source/class/qx/test/lang/normalize/Function.js +7 -13
  597. package/source/class/qx/test/lang/normalize/Object.js +22 -29
  598. package/source/class/qx/test/lang/normalize/String.js +19 -28
  599. package/source/class/qx/test/locale/Date.js +91 -43
  600. package/source/class/qx/test/locale/Locale.js +52 -32
  601. package/source/class/qx/test/locale/LocalizedString.js +12 -12
  602. package/source/class/qx/test/log/DeprecationMethodOverriding.js +52 -31
  603. package/source/class/qx/test/log/Filters.js +6 -3
  604. package/source/class/qx/test/log/Formatter.js +13 -7
  605. package/source/class/qx/test/log/Logger.js +19 -29
  606. package/source/class/qx/test/log/RingBuffer.js +14 -25
  607. package/source/class/qx/test/log/__init__.js +4 -4
  608. package/source/class/qx/test/log/fixture/ClassA.js +22 -22
  609. package/source/class/qx/test/log/fixture/ClassB1.js +7 -9
  610. package/source/class/qx/test/log/fixture/ClassB2.js +5 -7
  611. package/source/class/qx/test/log/fixture/ClassC1.js +5 -7
  612. package/source/class/qx/test/log/fixture/ClassC2.js +7 -9
  613. package/source/class/qx/test/mobile/LocaleSwitch.js +29 -36
  614. package/source/class/qx/test/mobile/MobileTestCase.js +39 -49
  615. package/source/class/qx/test/mobile/basic/Atom.js +129 -53
  616. package/source/class/qx/test/mobile/basic/Image.js +41 -31
  617. package/source/class/qx/test/mobile/basic/Label.js +6 -10
  618. package/source/class/qx/test/mobile/container/Carousel.js +41 -45
  619. package/source/class/qx/test/mobile/container/Composite.js +48 -65
  620. package/source/class/qx/test/mobile/container/Drawer.js +42 -29
  621. package/source/class/qx/test/mobile/container/Navigation.js +14 -20
  622. package/source/class/qx/test/mobile/container/Scroll.js +23 -19
  623. package/source/class/qx/test/mobile/core/Widget.js +150 -86
  624. package/source/class/qx/test/mobile/dialog/Menu.js +47 -26
  625. package/source/class/qx/test/mobile/dialog/Popup.js +30 -19
  626. package/source/class/qx/test/mobile/embed/Html.js +5 -8
  627. package/source/class/qx/test/mobile/form/Button.js +15 -13
  628. package/source/class/qx/test/mobile/form/CheckBox.js +21 -17
  629. package/source/class/qx/test/mobile/form/Form.js +37 -24
  630. package/source/class/qx/test/mobile/form/Group.js +5 -9
  631. package/source/class/qx/test/mobile/form/Label.js +11 -13
  632. package/source/class/qx/test/mobile/form/NumberField.js +49 -45
  633. package/source/class/qx/test/mobile/form/RadioButton.js +30 -19
  634. package/source/class/qx/test/mobile/form/SelectBox.js +39 -25
  635. package/source/class/qx/test/mobile/form/SingleRenderer.js +31 -27
  636. package/source/class/qx/test/mobile/form/Slider.js +55 -35
  637. package/source/class/qx/test/mobile/form/TextArea.js +34 -24
  638. package/source/class/qx/test/mobile/form/TextField.js +34 -24
  639. package/source/class/qx/test/mobile/form/ToggleButton.js +10 -14
  640. package/source/class/qx/test/mobile/layout/Card.js +21 -17
  641. package/source/class/qx/test/mobile/layout/HBox.js +25 -20
  642. package/source/class/qx/test/mobile/layout/VBox.js +25 -21
  643. package/source/class/qx/test/mobile/list/List.js +114 -83
  644. package/source/class/qx/test/mobile/navigationbar/NavigationBar.js +5 -9
  645. package/source/class/qx/test/mobile/page/Manager.js +7 -13
  646. package/source/class/qx/test/mobile/page/NavigationPage.js +7 -17
  647. package/source/class/qx/test/mobile/page/Page.js +101 -68
  648. package/source/class/qx/test/mobile/tabbar/TabBar.js +11 -21
  649. package/source/class/qx/test/mobile/toolbar/Toolbar.js +16 -16
  650. package/source/class/qx/test/performance/BaseCall.js +31 -36
  651. package/source/class/qx/test/performance/Event.js +60 -53
  652. package/source/class/qx/test/performance/Object.js +16 -22
  653. package/source/class/qx/test/performance/Property.js +20 -22
  654. package/source/class/qx/test/performance/data/Marshaling.js +25 -30
  655. package/source/class/qx/test/performance/decorator/AbstractDecorator.js +22 -34
  656. package/source/class/qx/test/performance/decorator/Background.js +4 -6
  657. package/source/class/qx/test/performance/decorator/BackgroundScale.js +6 -8
  658. package/source/class/qx/test/performance/decorator/Single.js +4 -6
  659. package/source/class/qx/test/performance/element/Element.js +50 -67
  660. package/source/class/qx/test/performance/widget/AbstractWidget.js +31 -44
  661. package/source/class/qx/test/performance/widget/Button.js +5 -7
  662. package/source/class/qx/test/performance/widget/Label.js +5 -7
  663. package/source/class/qx/test/performance/widget/RichLabel.js +6 -8
  664. package/source/class/qx/test/performance/widget/Widget.js +5 -7
  665. package/source/class/qx/test/performance/widget/WidgetWithDecorator.js +7 -9
  666. package/source/class/qx/test/performance/widget/WidgetWithSingle.js +9 -11
  667. package/source/class/qx/test/renderer/Color.js +22 -49
  668. package/source/class/qx/test/testclasses/BaseClassBoth.js +11 -8
  669. package/source/class/qx/test/testclasses/BaseClassIncluded.js +5 -6
  670. package/source/class/qx/test/testclasses/BaseClassPatched.js +15 -8
  671. package/source/class/qx/test/testclasses/DerivedClassBoth.js +7 -7
  672. package/source/class/qx/test/testclasses/DerivedClassIncluded.js +7 -7
  673. package/source/class/qx/test/testclasses/DerivedClassPatched.js +7 -7
  674. package/source/class/qx/test/testclasses/MMixinOne.js +4 -4
  675. package/source/class/qx/test/testclasses/MMixinTwo.js +2 -2
  676. package/source/class/qx/test/testclasses/RootClass.js +8 -8
  677. package/source/class/qx/test/theme/__init__.js +4 -4
  678. package/source/class/qx/test/theme/manager/Color.js +52 -66
  679. package/source/class/qx/test/theme/manager/Decoration.js +177 -154
  680. package/source/class/qx/test/theme/manager/Font.js +68 -39
  681. package/source/class/qx/test/theme/manager/Icon.js +46 -43
  682. package/source/class/qx/test/theme/manager/Meta.js +121 -110
  683. package/source/class/qx/test/theme/manager/__init__.js +4 -4
  684. package/source/class/qx/test/theme/manager/mock/Appearance.js +17 -23
  685. package/source/class/qx/test/theme/manager/mock/Color.js +7 -9
  686. package/source/class/qx/test/theme/manager/mock/Decoration.js +7 -10
  687. package/source/class/qx/test/theme/manager/mock/Font.js +6 -10
  688. package/source/class/qx/test/theme/simple/Appearance.js +268 -210
  689. package/source/class/qx/test/tool/utils/Utils.js +10 -8
  690. package/source/class/qx/test/toolchain/PrivateOptimization.js +20 -13
  691. package/source/class/qx/test/toolchain/TestRunner.js +12 -12
  692. package/source/class/qx/test/toolchain/VariantOptimization.js +37 -26
  693. package/source/class/qx/test/toolchain/__init__.js +4 -4
  694. package/source/class/qx/test/type/Array.js +8 -12
  695. package/source/class/qx/test/type/BaseArray.js +58 -78
  696. package/source/class/qx/test/type/BaseString.js +30 -61
  697. package/source/class/qx/test/type/__init__.js +4 -4
  698. package/source/class/qx/test/ui/BackgroundColor.js +20 -21
  699. package/source/class/qx/test/ui/ChildrenHandling.js +136 -81
  700. package/source/class/qx/test/ui/Destroy.js +310 -248
  701. package/source/class/qx/test/ui/Focus.js +40 -87
  702. package/source/class/qx/test/ui/Insets.js +14 -18
  703. package/source/class/qx/test/ui/LayoutTestCase.js +99 -92
  704. package/source/class/qx/test/ui/LocaleSwitch.js +37 -41
  705. package/source/class/qx/test/ui/RadioItems.js +11 -22
  706. package/source/class/qx/test/ui/Widget.js +13 -17
  707. package/source/class/qx/test/ui/Window.js +26 -39
  708. package/source/class/qx/test/ui/basic/Atom.js +37 -25
  709. package/source/class/qx/test/ui/basic/Image.js +179 -138
  710. package/source/class/qx/test/ui/basic/Label.js +147 -65
  711. package/source/class/qx/test/ui/basic/__init__.js +4 -4
  712. package/source/class/qx/test/ui/command/Command.js +105 -69
  713. package/source/class/qx/test/ui/command/Group.js +24 -21
  714. package/source/class/qx/test/ui/command/GroupManager.js +7 -12
  715. package/source/class/qx/test/ui/container/Stack.js +26 -36
  716. package/source/class/qx/test/ui/core/AbstractScrollArea.js +84 -67
  717. package/source/class/qx/test/ui/core/Appearance.js +53 -54
  718. package/source/class/qx/test/ui/core/Blocker.js +80 -44
  719. package/source/class/qx/test/ui/core/DragDropScrolling.js +69 -55
  720. package/source/class/qx/test/ui/core/Placement.js +22 -34
  721. package/source/class/qx/test/ui/core/Queues.js +28 -39
  722. package/source/class/qx/test/ui/core/SizeHint.js +32 -76
  723. package/source/class/qx/test/ui/core/SizeHintX.js +8 -15
  724. package/source/class/qx/test/ui/core/SizeHintY.js +8 -15
  725. package/source/class/qx/test/ui/core/Spacer.js +11 -18
  726. package/source/class/qx/test/ui/core/Widget.js +117 -112
  727. package/source/class/qx/test/ui/core/__init__.js +4 -4
  728. package/source/class/qx/test/ui/decoration/LinearGradient.js +18 -14
  729. package/source/class/qx/test/ui/embed/Iframe.js +70 -65
  730. package/source/class/qx/test/ui/embed/__init__.js +4 -4
  731. package/source/class/qx/test/ui/form/AbstractSelectBox.js +11 -16
  732. package/source/class/qx/test/ui/form/AbstractVirtualBox.js +12 -19
  733. package/source/class/qx/test/ui/form/BooleanFormat.js +40 -25
  734. package/source/class/qx/test/ui/form/Color.js +29 -19
  735. package/source/class/qx/test/ui/form/ComboBox.js +39 -67
  736. package/source/class/qx/test/ui/form/Date.js +34 -21
  737. package/source/class/qx/test/ui/form/DateField.js +16 -19
  738. package/source/class/qx/test/ui/form/Executable.js +98 -68
  739. package/source/class/qx/test/ui/form/Field.js +65 -54
  740. package/source/class/qx/test/ui/form/Form.js +211 -123
  741. package/source/class/qx/test/ui/form/FormManager.js +72 -100
  742. package/source/class/qx/test/ui/form/FormValidator.js +549 -399
  743. package/source/class/qx/test/ui/form/Label.js +87 -65
  744. package/source/class/qx/test/ui/form/List.js +19 -19
  745. package/source/class/qx/test/ui/form/MenuButton.js +26 -20
  746. package/source/class/qx/test/ui/form/ModelProperty.js +40 -36
  747. package/source/class/qx/test/ui/form/ModelSelection.js +39 -84
  748. package/source/class/qx/test/ui/form/NumberFormat.js +30 -19
  749. package/source/class/qx/test/ui/form/Placeholder.js +147 -87
  750. package/source/class/qx/test/ui/form/RadioButtonGroup.js +31 -26
  751. package/source/class/qx/test/ui/form/RadioGroup.js +58 -54
  752. package/source/class/qx/test/ui/form/Range.js +63 -28
  753. package/source/class/qx/test/ui/form/Renderer.js +39 -33
  754. package/source/class/qx/test/ui/form/Resetter.js +21 -35
  755. package/source/class/qx/test/ui/form/Slider.js +37 -21
  756. package/source/class/qx/test/ui/form/Spinner.js +9 -5
  757. package/source/class/qx/test/ui/form/SplitButton.js +7 -11
  758. package/source/class/qx/test/ui/form/StringFormat.js +60 -30
  759. package/source/class/qx/test/ui/form/TextArea.js +59 -41
  760. package/source/class/qx/test/ui/form/TextField.js +14 -16
  761. package/source/class/qx/test/ui/form/ToggleButton.js +20 -24
  762. package/source/class/qx/test/ui/form/VirtualSelectBox.js +66 -40
  763. package/source/class/qx/test/ui/form/__init__.js +4 -4
  764. package/source/class/qx/test/ui/form/virtual/VirtualComboBox.js +58 -60
  765. package/source/class/qx/test/ui/form/virtual/VirtualDropDownList.js +120 -110
  766. package/source/class/qx/test/ui/form/virtual/VirtualSelectBox.js +43 -27
  767. package/source/class/qx/test/ui/groupbox/CheckGroupBox.js +13 -18
  768. package/source/class/qx/test/ui/indicator/ProgressBar.js +73 -48
  769. package/source/class/qx/test/ui/layout/Box.js +23 -22
  770. package/source/class/qx/test/ui/layout/Flow.js +233 -153
  771. package/source/class/qx/test/ui/layout/Grid.js +88 -101
  772. package/source/class/qx/test/ui/layout/LayoutItem.js +57 -83
  773. package/source/class/qx/test/ui/layout/LayoutRoot.js +7 -11
  774. package/source/class/qx/test/ui/layout/Util.js +30 -31
  775. package/source/class/qx/test/ui/layout/__init__.js +4 -4
  776. package/source/class/qx/test/ui/list/AbstractListTest.js +13 -21
  777. package/source/class/qx/test/ui/list/Group.js +191 -114
  778. package/source/class/qx/test/ui/list/List.js +189 -132
  779. package/source/class/qx/test/ui/list/MAssert.js +14 -9
  780. package/source/class/qx/test/ui/list/ObjectGroup.js +131 -109
  781. package/source/class/qx/test/ui/list/core/MultiSelection.js +58 -44
  782. package/source/class/qx/test/ui/list/core/SingleSelection.js +43 -43
  783. package/source/class/qx/test/ui/list/fixture/GroupMock.js +6 -9
  784. package/source/class/qx/test/ui/list/fixture/ItemMock.js +9 -13
  785. package/source/class/qx/test/ui/root/Inline.js +22 -20
  786. package/source/class/qx/test/ui/selection/AbstractMultiSelectonTest.js +188 -105
  787. package/source/class/qx/test/ui/selection/AbstractSingleSelectonTest.js +173 -125
  788. package/source/class/qx/test/ui/selection/ListMultiSelection.js +19 -21
  789. package/source/class/qx/test/ui/selection/ListSingleSelection.js +19 -21
  790. package/source/class/qx/test/ui/selection/RadioGroup.js +41 -29
  791. package/source/class/qx/test/ui/selection/SelectBox.js +11 -17
  792. package/source/class/qx/test/ui/selection/Stack.js +22 -27
  793. package/source/class/qx/test/ui/selection/TabView.js +35 -26
  794. package/source/class/qx/test/ui/selection/TreeMultiSelection.js +14 -19
  795. package/source/class/qx/test/ui/selection/TreeSingleSelection.js +20 -24
  796. package/source/class/qx/test/ui/selection/__init__.js +4 -4
  797. package/source/class/qx/test/ui/table/Dispose.js +46 -46
  798. package/source/class/qx/test/ui/table/Table.js +74 -69
  799. package/source/class/qx/test/ui/table/__init__.js +4 -4
  800. package/source/class/qx/test/ui/table/celleditor/AbstractField.js +14 -28
  801. package/source/class/qx/test/ui/table/celleditor/ComboBox.js +11 -18
  802. package/source/class/qx/test/ui/table/celleditor/PasswordField.js +6 -10
  803. package/source/class/qx/test/ui/table/celleditor/SelectBox.js +16 -32
  804. package/source/class/qx/test/ui/table/celleditor/TextField.js +6 -9
  805. package/source/class/qx/test/ui/table/celleditor/__init__.js +4 -4
  806. package/source/class/qx/test/ui/table/columnmodel/Basic.js +130 -129
  807. package/source/class/qx/test/ui/table/model/Filtered.js +51 -36
  808. package/source/class/qx/test/ui/table/model/Simple.js +43 -45
  809. package/source/class/qx/test/ui/table/selection/Model.js +70 -22
  810. package/source/class/qx/test/ui/toolbar/OverflowHandling.js +145 -123
  811. package/source/class/qx/test/ui/toolbar/ToolBar.js +20 -30
  812. package/source/class/qx/test/ui/tree/Tree.js +63 -42
  813. package/source/class/qx/test/ui/tree/TreeFolder.js +44 -46
  814. package/source/class/qx/test/ui/tree/virtual/AbstractTreeTest.js +61 -96
  815. package/source/class/qx/test/ui/tree/virtual/MultiSelection.js +68 -39
  816. package/source/class/qx/test/ui/tree/virtual/OneSelection.js +82 -42
  817. package/source/class/qx/test/ui/tree/virtual/OpenCloseController.js +80 -101
  818. package/source/class/qx/test/ui/tree/virtual/SingleSelection.js +40 -32
  819. package/source/class/qx/test/ui/tree/virtual/Sorting.js +46 -47
  820. package/source/class/qx/test/ui/tree/virtual/Tree.js +267 -191
  821. package/source/class/qx/test/ui/tree/virtual/TreeItem.js +60 -63
  822. package/source/class/qx/test/ui/tree/virtual/UtilTest.js +65 -50
  823. package/source/class/qx/test/ui/tree/virtual/WidgetProvider.js +127 -132
  824. package/source/class/qx/test/ui/virtual/Axis.js +210 -193
  825. package/source/class/qx/test/ui/virtual/Pane.js +287 -190
  826. package/source/class/qx/test/ui/virtual/PaneUpdate.js +71 -77
  827. package/source/class/qx/test/ui/virtual/PointerEventMock.js +10 -13
  828. package/source/class/qx/test/ui/virtual/Scroller.js +29 -39
  829. package/source/class/qx/test/ui/virtual/__init__.js +4 -4
  830. package/source/class/qx/test/ui/virtual/cell/WidgetCell.js +39 -40
  831. package/source/class/qx/test/ui/virtual/layer/CellSpanManager.js +157 -127
  832. package/source/class/qx/test/ui/virtual/layer/Column.js +6 -10
  833. package/source/class/qx/test/ui/virtual/layer/GridLines.js +6 -10
  834. package/source/class/qx/test/ui/virtual/layer/GridLinesHorizontal.js +6 -9
  835. package/source/class/qx/test/ui/virtual/layer/GridLinesVertical.js +6 -9
  836. package/source/class/qx/test/ui/virtual/layer/HtmlCell.js +12 -19
  837. package/source/class/qx/test/ui/virtual/layer/HtmlCellSpan.js +13 -21
  838. package/source/class/qx/test/ui/virtual/layer/LayerMock.js +31 -43
  839. package/source/class/qx/test/ui/virtual/layer/LayerSimple.js +26 -26
  840. package/source/class/qx/test/ui/virtual/layer/LayerTestCase.js +52 -50
  841. package/source/class/qx/test/ui/virtual/layer/Row.js +6 -10
  842. package/source/class/qx/test/ui/virtual/layer/WidgetCell.js +45 -52
  843. package/source/class/qx/test/ui/virtual/layer/WidgetCellSpan.js +71 -48
  844. package/source/class/qx/test/ui/virtual/layer/__init__.js +4 -4
  845. package/source/class/qx/test/ui/virtual/performance/AbstractLayerTest.js +84 -68
  846. package/source/class/qx/test/ui/virtual/performance/DomCell.js +6 -9
  847. package/source/class/qx/test/ui/virtual/performance/DomPoolCell.js +6 -9
  848. package/source/class/qx/test/ui/virtual/performance/HtmlDivCell.js +7 -11
  849. package/source/class/qx/test/ui/virtual/performance/HtmlDivRelative.js +6 -9
  850. package/source/class/qx/test/ui/virtual/performance/HtmlTableCell.js +8 -13
  851. package/source/class/qx/test/ui/virtual/performance/HtmlTableCellNaive.js +8 -13
  852. package/source/class/qx/test/ui/virtual/performance/HtmlTableCssCell.js +8 -19
  853. package/source/class/qx/test/ui/virtual/performance/WidgetCell.js +10 -15
  854. package/source/class/qx/test/ui/virtual/performance/__init__.js +4 -4
  855. package/source/class/qx/test/ui/virtual/performance/layer/DomCell.js +24 -18
  856. package/source/class/qx/test/ui/virtual/performance/layer/DomPoolCell.js +28 -26
  857. package/source/class/qx/test/ui/virtual/performance/layer/HtmlDivRelative.js +13 -17
  858. package/source/class/qx/test/ui/virtual/performance/layer/HtmlTableCell.js +29 -28
  859. package/source/class/qx/test/ui/virtual/performance/layer/HtmlTableCellNaive.js +22 -24
  860. package/source/class/qx/test/ui/virtual/performance/layer/HtmlTableCssCell.js +32 -47
  861. package/source/class/qx/test/ui/virtual/performance/layer/__init__.js +4 -4
  862. package/source/class/qx/test/ui/window/Desktop.js +21 -12
  863. package/source/class/qx/test/util/Base64.js +10 -13
  864. package/source/class/qx/test/util/ColorUtil.js +121 -54
  865. package/source/class/qx/test/util/DateFormat.js +569 -299
  866. package/source/class/qx/test/util/DateMock.js +16 -19
  867. package/source/class/qx/test/util/DeferredCall.js +12 -13
  868. package/source/class/qx/test/util/Delegate.js +28 -26
  869. package/source/class/qx/test/util/DisposeUtil.js +32 -14
  870. package/source/class/qx/test/util/DynamicScriptLoader.js +99 -64
  871. package/source/class/qx/test/util/Fsm.js +16 -18
  872. package/source/class/qx/test/util/Function.js +23 -19
  873. package/source/class/qx/test/util/LibraryManager.js +15 -22
  874. package/source/class/qx/test/util/NumberFormat.js +53 -64
  875. package/source/class/qx/test/util/PropertyUtil.js +35 -35
  876. package/source/class/qx/test/util/Request.js +26 -18
  877. package/source/class/qx/test/util/ResourceManager.js +50 -35
  878. package/source/class/qx/test/util/ResponseParser.js +45 -35
  879. package/source/class/qx/test/util/RingBuffer.js +15 -28
  880. package/source/class/qx/test/util/Serializer.js +210 -153
  881. package/source/class/qx/test/util/StringBuilder.js +7 -13
  882. package/source/class/qx/test/util/StringSplit.js +114 -69
  883. package/source/class/qx/test/util/Uri.js +74 -78
  884. package/source/class/qx/test/util/Validate.js +95 -64
  885. package/source/class/qx/test/util/placement/BestFitAxis.js +17 -26
  886. package/source/class/qx/test/util/placement/DirectAxis.js +8 -11
  887. package/source/class/qx/test/util/placement/KeepAlignAxis.js +17 -26
  888. package/source/class/qx/test/util/placement/Placement.js +607 -244
  889. package/source/class/qx/test/util/placement/__init__.js +4 -4
  890. package/source/class/qx/theme/Classic.js +9 -11
  891. package/source/class/qx/theme/Indigo.js +9 -11
  892. package/source/class/qx/theme/Modern.js +9 -11
  893. package/source/class/qx/theme/Simple.js +9 -11
  894. package/source/class/qx/theme/TangibleDark.js +1 -1
  895. package/source/class/qx/theme/TangibleLight.js +1 -1
  896. package/source/class/qx/theme/__init__.js +4 -4
  897. package/source/class/qx/theme/classic/Appearance.js +995 -1336
  898. package/source/class/qx/theme/classic/Color.js +83 -83
  899. package/source/class/qx/theme/classic/Decoration.js +318 -299
  900. package/source/class/qx/theme/classic/Font.js +38 -25
  901. package/source/class/qx/theme/icon/Oxygen.js +4 -5
  902. package/source/class/qx/theme/icon/Tango.js +4 -5
  903. package/source/class/qx/theme/indigo/Appearance.js +66 -85
  904. package/source/class/qx/theme/indigo/Color.js +65 -66
  905. package/source/class/qx/theme/indigo/Decoration.js +31 -45
  906. package/source/class/qx/theme/indigo/Font.js +20 -29
  907. package/source/class/qx/theme/manager/Appearance.js +58 -91
  908. package/source/class/qx/theme/manager/Color.js +20 -41
  909. package/source/class/qx/theme/manager/Decoration.js +72 -100
  910. package/source/class/qx/theme/manager/Font.js +51 -67
  911. package/source/class/qx/theme/manager/Icon.js +13 -27
  912. package/source/class/qx/theme/manager/Meta.js +27 -44
  913. package/source/class/qx/theme/modern/Appearance.js +1049 -1440
  914. package/source/class/qx/theme/modern/Color.js +155 -166
  915. package/source/class/qx/theme/modern/Decoration.js +471 -598
  916. package/source/class/qx/theme/modern/Font.js +59 -52
  917. package/source/class/qx/theme/simple/Appearance.js +936 -1207
  918. package/source/class/qx/theme/simple/Color.js +62 -62
  919. package/source/class/qx/theme/simple/Decoration.js +456 -678
  920. package/source/class/qx/theme/simple/Font.js +18 -25
  921. package/source/class/qx/theme/simple/Image.js +49 -52
  922. package/source/class/qx/theme/tangible/Appearance.js +1575 -1743
  923. package/source/class/qx/theme/tangible/ColorDark.js +5 -5
  924. package/source/class/qx/theme/tangible/ColorEngine.js +38 -35
  925. package/source/class/qx/theme/tangible/ColorLight.js +7 -7
  926. package/source/class/qx/theme/tangible/Decoration.js +1108 -1300
  927. package/source/class/qx/theme/tangible/Font.js +66 -70
  928. package/source/class/qx/theme/tangible/Image.js +44 -48
  929. package/source/class/qx/tool/cli/Application.js +5 -5
  930. package/source/class/qx/tool/cli/Cli.js +107 -54
  931. package/source/class/qx/tool/cli/ConfigDb.js +18 -15
  932. package/source/class/qx/tool/cli/LibraryApplication.js +1 -1
  933. package/source/class/qx/tool/cli/Watch.js +174 -102
  934. package/source/class/qx/tool/cli/api/AbstractApi.js +17 -18
  935. package/source/class/qx/tool/cli/api/CompilerApi.js +29 -12
  936. package/source/class/qx/tool/cli/api/LibraryApi.js +4 -6
  937. package/source/class/qx/tool/cli/api/Test.js +12 -9
  938. package/source/class/qx/tool/cli/commands/Add.js +12 -15
  939. package/source/class/qx/tool/cli/commands/Clean.js +10 -9
  940. package/source/class/qx/tool/cli/commands/Command.js +25 -13
  941. package/source/class/qx/tool/cli/commands/Compile.js +635 -269
  942. package/source/class/qx/tool/cli/commands/Config.js +75 -42
  943. package/source/class/qx/tool/cli/commands/Create.js +108 -59
  944. package/source/class/qx/tool/cli/commands/Deploy.js +138 -86
  945. package/source/class/qx/tool/cli/commands/Es6ify.js +118 -0
  946. package/source/class/qx/tool/cli/commands/Lint.js +101 -41
  947. package/source/class/qx/tool/cli/commands/Migrate.js +13 -7
  948. package/source/class/qx/tool/cli/commands/Package.js +67 -46
  949. package/source/class/qx/tool/cli/commands/Pkg.js +21 -18
  950. package/source/class/qx/tool/cli/commands/Run.js +57 -37
  951. package/source/class/qx/tool/cli/commands/Serve.js +62 -37
  952. package/source/class/qx/tool/cli/commands/Test.js +40 -18
  953. package/source/class/qx/tool/cli/commands/add/Class.js +66 -28
  954. package/source/class/qx/tool/cli/commands/add/Script.js +54 -27
  955. package/source/class/qx/tool/cli/commands/package/Install.js +265 -103
  956. package/source/class/qx/tool/cli/commands/package/List.js +199 -75
  957. package/source/class/qx/tool/cli/commands/package/Migrate.js +7 -3
  958. package/source/class/qx/tool/cli/commands/package/Publish.js +230 -115
  959. package/source/class/qx/tool/cli/commands/package/Remove.js +40 -17
  960. package/source/class/qx/tool/cli/commands/package/Update.js +115 -48
  961. package/source/class/qx/tool/cli/commands/package/Upgrade.js +41 -20
  962. package/source/class/qx/tool/compiler/Analyser.js +443 -239
  963. package/source/class/qx/tool/compiler/ClassFile.js +831 -401
  964. package/source/class/qx/tool/compiler/Console.js +136 -87
  965. package/source/class/qx/tool/compiler/Es6ify.js +404 -0
  966. package/source/class/qx/tool/compiler/Preprocess.js +28 -25
  967. package/source/class/qx/tool/compiler/app/Application.js +149 -72
  968. package/source/class/qx/tool/compiler/app/Cldr.js +506 -106
  969. package/source/class/qx/tool/compiler/app/Library.js +62 -27
  970. package/source/class/qx/tool/compiler/app/Part.js +10 -12
  971. package/source/class/qx/tool/compiler/app/Translation.js +189 -162
  972. package/source/class/qx/tool/compiler/app/WebFont.js +216 -162
  973. package/source/class/qx/tool/compiler/jsdoc/ChildControlParser.js +3 -3
  974. package/source/class/qx/tool/compiler/jsdoc/CommandParser.js +8 -9
  975. package/source/class/qx/tool/compiler/jsdoc/ParamParser.js +7 -6
  976. package/source/class/qx/tool/compiler/jsdoc/Parser.js +27 -18
  977. package/source/class/qx/tool/compiler/jsdoc/ReturnParser.js +3 -3
  978. package/source/class/qx/tool/compiler/jsdoc/ThrowsParser.js +4 -4
  979. package/source/class/qx/tool/compiler/makers/AbstractAppMaker.js +5 -6
  980. package/source/class/qx/tool/compiler/makers/AppMaker.js +53 -32
  981. package/source/class/qx/tool/compiler/makers/Maker.js +29 -21
  982. package/source/class/qx/tool/compiler/resources/AbstractMatcher.js +8 -8
  983. package/source/class/qx/tool/compiler/resources/Asset.js +123 -61
  984. package/source/class/qx/tool/compiler/resources/ImageLoader.js +18 -8
  985. package/source/class/qx/tool/compiler/resources/Manager.js +156 -93
  986. package/source/class/qx/tool/compiler/resources/MetaLoader.js +5 -3
  987. package/source/class/qx/tool/compiler/resources/ResourceConverter.js +8 -8
  988. package/source/class/qx/tool/compiler/resources/ResourceLoader.js +8 -9
  989. package/source/class/qx/tool/compiler/resources/ScssConverter.js +54 -18
  990. package/source/class/qx/tool/compiler/resources/ScssFile.js +157 -80
  991. package/source/class/qx/tool/compiler/resources/ScssIncludeConverter.js +3 -3
  992. package/source/class/qx/tool/compiler/targets/BuildTarget.js +23 -13
  993. package/source/class/qx/tool/compiler/targets/SourceCodeCopier.js +29 -9
  994. package/source/class/qx/tool/compiler/targets/SourceTarget.js +2 -2
  995. package/source/class/qx/tool/compiler/targets/Target.js +292 -187
  996. package/source/class/qx/tool/compiler/targets/TypeScriptWriter.js +163 -104
  997. package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +48 -23
  998. package/source/class/qx/tool/compiler/targets/meta/ApplicationMeta.js +75 -62
  999. package/source/class/qx/tool/compiler/targets/meta/BootJs.js +49 -29
  1000. package/source/class/qx/tool/compiler/targets/meta/Javascript.js +6 -7
  1001. package/source/class/qx/tool/compiler/targets/meta/Package.js +54 -51
  1002. package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +41 -21
  1003. package/source/class/qx/tool/compiler/targets/meta/Part.js +9 -10
  1004. package/source/class/qx/tool/compiler/targets/meta/PolyfillJs.js +23 -10
  1005. package/source/class/qx/tool/compiler/targets/meta/Uglify.js +35 -23
  1006. package/source/class/qx/tool/config/Abstract.js +61 -25
  1007. package/source/class/qx/tool/config/Compile.js +3 -2
  1008. package/source/class/qx/tool/config/Lockfile.js +3 -2
  1009. package/source/class/qx/tool/config/Manifest.js +3 -2
  1010. package/source/class/qx/tool/config/Registry.js +4 -3
  1011. package/source/class/qx/tool/config/Utils.js +97 -37
  1012. package/source/class/qx/tool/migration/BaseMigration.js +67 -25
  1013. package/source/class/qx/tool/migration/M6_0_0.js +96 -46
  1014. package/source/class/qx/tool/migration/M7_0_0.js +12 -6
  1015. package/source/class/qx/tool/migration/Runner.js +28 -14
  1016. package/source/class/qx/tool/utils/IndexedArray.js +15 -18
  1017. package/source/class/qx/tool/utils/Json.js +36 -15
  1018. package/source/class/qx/tool/utils/LogManager.js +50 -26
  1019. package/source/class/qx/tool/utils/Logger.js +11 -12
  1020. package/source/class/qx/tool/utils/Promisify.js +45 -49
  1021. package/source/class/qx/tool/utils/Utils.js +63 -48
  1022. package/source/class/qx/tool/utils/Values.js +4 -7
  1023. package/source/class/qx/tool/utils/Website.js +82 -29
  1024. package/source/class/qx/tool/utils/files/FindFiles.js +37 -33
  1025. package/source/class/qx/tool/utils/files/Utils.js +74 -54
  1026. package/source/class/qx/tool/utils/json/Parser.js +163 -54
  1027. package/source/class/qx/tool/utils/json/Stringify.js +87 -72
  1028. package/source/class/qx/tool/utils/json/Tokenizer.js +64 -39
  1029. package/source/class/qx/tool/utils/json/Writer.js +20 -21
  1030. package/source/class/qx/type/Array.js +19 -41
  1031. package/source/class/qx/type/BaseArray.js +136 -151
  1032. package/source/class/qx/type/BaseError.js +17 -34
  1033. package/source/class/qx/type/BaseString.js +104 -120
  1034. package/source/class/qx/type/__init__.js +3 -3
  1035. package/source/class/qx/ui/basic/Atom.js +75 -109
  1036. package/source/class/qx/ui/basic/Image.js +283 -319
  1037. package/source/class/qx/ui/basic/Label.js +161 -208
  1038. package/source/class/qx/ui/command/Command.js +51 -86
  1039. package/source/class/qx/ui/command/Group.js +43 -50
  1040. package/source/class/qx/ui/command/GroupManager.js +50 -53
  1041. package/source/class/qx/ui/container/Composite.js +15 -29
  1042. package/source/class/qx/ui/container/Resizer.js +7 -11
  1043. package/source/class/qx/ui/container/Scroll.js +10 -21
  1044. package/source/class/qx/ui/container/SlideBar.js +78 -118
  1045. package/source/class/qx/ui/container/Stack.js +27 -54
  1046. package/source/class/qx/ui/control/ColorPopup.js +109 -130
  1047. package/source/class/qx/ui/control/ColorSelector.js +334 -301
  1048. package/source/class/qx/ui/control/DateChooser.js +143 -177
  1049. package/source/class/qx/ui/core/Blocker.js +91 -127
  1050. package/source/class/qx/ui/core/ColumnData.js +16 -34
  1051. package/source/class/qx/ui/core/DragDropCursor.js +17 -30
  1052. package/source/class/qx/ui/core/DragDropScrolling.js +8 -14
  1053. package/source/class/qx/ui/core/EventHandler.js +108 -132
  1054. package/source/class/qx/ui/core/FocusHandler.js +78 -127
  1055. package/source/class/qx/ui/core/IMultiSelection.js +5 -9
  1056. package/source/class/qx/ui/core/ISingleSelection.js +10 -16
  1057. package/source/class/qx/ui/core/ISingleSelectionProvider.js +4 -6
  1058. package/source/class/qx/ui/core/LayoutItem.js +190 -306
  1059. package/source/class/qx/ui/core/MBlocker.js +22 -38
  1060. package/source/class/qx/ui/core/MChildrenHandling.js +14 -29
  1061. package/source/class/qx/ui/core/MContentPadding.js +50 -69
  1062. package/source/class/qx/ui/core/MDragDropScrolling.js +82 -80
  1063. package/source/class/qx/ui/core/MExecutable.js +27 -52
  1064. package/source/class/qx/ui/core/MLayoutHandling.js +6 -14
  1065. package/source/class/qx/ui/core/MMovable.js +64 -80
  1066. package/source/class/qx/ui/core/MMultiSelectionHandling.js +68 -87
  1067. package/source/class/qx/ui/core/MNativeOverflow.js +16 -26
  1068. package/source/class/qx/ui/core/MPlacement.js +171 -170
  1069. package/source/class/qx/ui/core/MRemoteChildrenHandling.js +14 -27
  1070. package/source/class/qx/ui/core/MRemoteLayoutHandling.js +4 -7
  1071. package/source/class/qx/ui/core/MResizable.js +142 -175
  1072. package/source/class/qx/ui/core/MSingleSelectionHandling.js +40 -45
  1073. package/source/class/qx/ui/core/SingleSelectionManager.js +41 -60
  1074. package/source/class/qx/ui/core/Spacer.js +12 -22
  1075. package/source/class/qx/ui/core/Widget.js +688 -973
  1076. package/source/class/qx/ui/core/queue/Appearance.js +15 -24
  1077. package/source/class/qx/ui/core/queue/Dispose.js +7 -16
  1078. package/source/class/qx/ui/core/queue/Layout.js +44 -71
  1079. package/source/class/qx/ui/core/queue/Manager.js +140 -133
  1080. package/source/class/qx/ui/core/queue/Visibility.js +21 -39
  1081. package/source/class/qx/ui/core/queue/Widget.js +15 -26
  1082. package/source/class/qx/ui/core/scroll/AbstractScrollArea.js +124 -162
  1083. package/source/class/qx/ui/core/scroll/IScrollBar.js +13 -24
  1084. package/source/class/qx/ui/core/scroll/MRoll.js +14 -19
  1085. package/source/class/qx/ui/core/scroll/MScrollBarFactory.js +3 -6
  1086. package/source/class/qx/ui/core/scroll/MWheelHandling.js +10 -12
  1087. package/source/class/qx/ui/core/scroll/NativeScrollBar.js +103 -124
  1088. package/source/class/qx/ui/core/scroll/ScrollBar.js +89 -130
  1089. package/source/class/qx/ui/core/scroll/ScrollPane.js +95 -134
  1090. package/source/class/qx/ui/core/scroll/ScrollSlider.js +13 -19
  1091. package/source/class/qx/ui/core/scroll/__init__.js +4 -4
  1092. package/source/class/qx/ui/core/selection/Abstract.js +255 -456
  1093. package/source/class/qx/ui/core/selection/ScrollArea.js +35 -73
  1094. package/source/class/qx/ui/core/selection/Widget.js +57 -120
  1095. package/source/class/qx/ui/decoration/Abstract.js +11 -20
  1096. package/source/class/qx/ui/decoration/Decorator.js +56 -55
  1097. package/source/class/qx/ui/decoration/IDecorator.js +5 -11
  1098. package/source/class/qx/ui/decoration/MBackgroundColor.js +13 -20
  1099. package/source/class/qx/ui/decoration/MBackgroundImage.js +82 -77
  1100. package/source/class/qx/ui/decoration/MBorderImage.js +72 -94
  1101. package/source/class/qx/ui/decoration/MBorderRadius.js +35 -38
  1102. package/source/class/qx/ui/decoration/MBoxShadow.js +61 -55
  1103. package/source/class/qx/ui/decoration/MDoubleBorder.js +157 -155
  1104. package/source/class/qx/ui/decoration/MLinearBackgroundGradient.js +169 -89
  1105. package/source/class/qx/ui/decoration/MSingleBorder.js +138 -124
  1106. package/source/class/qx/ui/decoration/MTransition.js +46 -42
  1107. package/source/class/qx/ui/decoration/__init__.js +2 -2
  1108. package/source/class/qx/ui/embed/AbstractIframe.js +37 -55
  1109. package/source/class/qx/ui/embed/Canvas.js +34 -66
  1110. package/source/class/qx/ui/embed/Html.js +46 -70
  1111. package/source/class/qx/ui/embed/Iframe.js +178 -158
  1112. package/source/class/qx/ui/embed/ThemedIframe.js +91 -135
  1113. package/source/class/qx/ui/form/AbstractField.js +262 -303
  1114. package/source/class/qx/ui/form/AbstractSelectBox.js +98 -88
  1115. package/source/class/qx/ui/form/Button.js +38 -73
  1116. package/source/class/qx/ui/form/CheckBox.js +47 -45
  1117. package/source/class/qx/ui/form/CheckedList.js +41 -25
  1118. package/source/class/qx/ui/form/CheckedSelectBox.js +97 -62
  1119. package/source/class/qx/ui/form/ComboBox.js +129 -143
  1120. package/source/class/qx/ui/form/DateField.js +150 -176
  1121. package/source/class/qx/ui/form/Form.js +50 -69
  1122. package/source/class/qx/ui/form/HoverButton.js +37 -54
  1123. package/source/class/qx/ui/form/IArrayForm.js +8 -16
  1124. package/source/class/qx/ui/form/IBooleanForm.js +8 -16
  1125. package/source/class/qx/ui/form/IColorForm.js +8 -16
  1126. package/source/class/qx/ui/form/IDateForm.js +8 -16
  1127. package/source/class/qx/ui/form/IExecutable.js +7 -14
  1128. package/source/class/qx/ui/form/IField.js +7 -14
  1129. package/source/class/qx/ui/form/IForm.js +17 -32
  1130. package/source/class/qx/ui/form/IListItem.js +1 -4
  1131. package/source/class/qx/ui/form/IModel.js +7 -15
  1132. package/source/class/qx/ui/form/IModelForm.js +8 -16
  1133. package/source/class/qx/ui/form/IModelSelection.js +4 -8
  1134. package/source/class/qx/ui/form/INumberForm.js +8 -15
  1135. package/source/class/qx/ui/form/IRadioItem.js +8 -17
  1136. package/source/class/qx/ui/form/IRange.js +10 -20
  1137. package/source/class/qx/ui/form/IStringForm.js +8 -16
  1138. package/source/class/qx/ui/form/List.js +85 -122
  1139. package/source/class/qx/ui/form/ListItem.js +21 -38
  1140. package/source/class/qx/ui/form/MForm.js +35 -41
  1141. package/source/class/qx/ui/form/MModelProperty.js +9 -14
  1142. package/source/class/qx/ui/form/MModelSelection.js +30 -32
  1143. package/source/class/qx/ui/form/MenuButton.js +68 -73
  1144. package/source/class/qx/ui/form/PasswordField.js +4 -6
  1145. package/source/class/qx/ui/form/RadioButton.js +43 -72
  1146. package/source/class/qx/ui/form/RadioButtonGroup.js +70 -82
  1147. package/source/class/qx/ui/form/RadioGroup.js +110 -126
  1148. package/source/class/qx/ui/form/RepeatButton.js +57 -106
  1149. package/source/class/qx/ui/form/Resetter.js +19 -29
  1150. package/source/class/qx/ui/form/SelectBox.js +80 -101
  1151. package/source/class/qx/ui/form/Slider.js +216 -268
  1152. package/source/class/qx/ui/form/Spinner.js +173 -217
  1153. package/source/class/qx/ui/form/SplitButton.js +76 -115
  1154. package/source/class/qx/ui/form/Tag.js +7 -8
  1155. package/source/class/qx/ui/form/TextArea.js +147 -153
  1156. package/source/class/qx/ui/form/TextField.js +37 -46
  1157. package/source/class/qx/ui/form/ToggleButton.js +62 -90
  1158. package/source/class/qx/ui/form/VirtualComboBox.js +73 -113
  1159. package/source/class/qx/ui/form/VirtualSelectBox.js +264 -274
  1160. package/source/class/qx/ui/form/core/AbstractVirtualBox.js +117 -157
  1161. package/source/class/qx/ui/form/core/VirtualDropDownList.js +101 -144
  1162. package/source/class/qx/ui/form/renderer/AbstractRenderer.js +48 -55
  1163. package/source/class/qx/ui/form/renderer/Double.js +25 -34
  1164. package/source/class/qx/ui/form/renderer/IFormRenderer.js +4 -8
  1165. package/source/class/qx/ui/form/renderer/Single.js +25 -35
  1166. package/source/class/qx/ui/form/renderer/SinglePlaceholder.js +12 -11
  1167. package/source/class/qx/ui/form/renderer/__init__.js +5 -5
  1168. package/source/class/qx/ui/form/validation/AsyncValidator.js +13 -19
  1169. package/source/class/qx/ui/form/validation/Manager.js +74 -108
  1170. package/source/class/qx/ui/form/validation/__init__.js +6 -6
  1171. package/source/class/qx/ui/groupbox/CheckGroupBox.js +30 -47
  1172. package/source/class/qx/ui/groupbox/GroupBox.js +36 -75
  1173. package/source/class/qx/ui/groupbox/RadioGroupBox.js +29 -59
  1174. package/source/class/qx/ui/groupbox/__init__.js +3 -3
  1175. package/source/class/qx/ui/indicator/ProgressBar.js +29 -46
  1176. package/source/class/qx/ui/layout/Abstract.js +28 -53
  1177. package/source/class/qx/ui/layout/Atom.js +95 -111
  1178. package/source/class/qx/ui/layout/Basic.js +29 -30
  1179. package/source/class/qx/ui/layout/Canvas.js +62 -99
  1180. package/source/class/qx/ui/layout/Dock.js +266 -250
  1181. package/source/class/qx/ui/layout/Flow.js +50 -76
  1182. package/source/class/qx/ui/layout/Grid.js +268 -343
  1183. package/source/class/qx/ui/layout/Grow.js +26 -32
  1184. package/source/class/qx/ui/layout/HBox.js +137 -153
  1185. package/source/class/qx/ui/layout/LineSizeIterator.js +19 -28
  1186. package/source/class/qx/ui/layout/Util.js +91 -120
  1187. package/source/class/qx/ui/layout/VBox.js +125 -147
  1188. package/source/class/qx/ui/list/List.js +148 -262
  1189. package/source/class/qx/ui/list/core/IListDelegate.js +13 -26
  1190. package/source/class/qx/ui/list/core/MWidgetController.js +51 -78
  1191. package/source/class/qx/ui/list/provider/IListProvider.js +15 -28
  1192. package/source/class/qx/ui/list/provider/WidgetProvider.js +52 -84
  1193. package/source/class/qx/ui/menu/AbstractButton.js +141 -122
  1194. package/source/class/qx/ui/menu/Button.js +14 -25
  1195. package/source/class/qx/ui/menu/ButtonLayout.js +49 -37
  1196. package/source/class/qx/ui/menu/CheckBox.js +28 -45
  1197. package/source/class/qx/ui/menu/Layout.js +45 -51
  1198. package/source/class/qx/ui/menu/Manager.js +132 -208
  1199. package/source/class/qx/ui/menu/Menu.js +227 -250
  1200. package/source/class/qx/ui/menu/MenuSlideBar.js +13 -20
  1201. package/source/class/qx/ui/menu/RadioButton.js +38 -51
  1202. package/source/class/qx/ui/menu/Separator.js +9 -16
  1203. package/source/class/qx/ui/menubar/Button.js +22 -67
  1204. package/source/class/qx/ui/menubar/MenuBar.js +17 -9
  1205. package/source/class/qx/ui/mobile/__init__.js +5 -5
  1206. package/source/class/qx/ui/mobile/basic/Atom.js +79 -101
  1207. package/source/class/qx/ui/mobile/basic/Image.js +80 -86
  1208. package/source/class/qx/ui/mobile/basic/Label.js +38 -54
  1209. package/source/class/qx/ui/mobile/container/Carousel.js +281 -188
  1210. package/source/class/qx/ui/mobile/container/Collapsible.js +57 -77
  1211. package/source/class/qx/ui/mobile/container/Composite.js +9 -13
  1212. package/source/class/qx/ui/mobile/container/Drawer.js +167 -164
  1213. package/source/class/qx/ui/mobile/container/INavigation.js +6 -10
  1214. package/source/class/qx/ui/mobile/container/IScrollDelegate.js +4 -6
  1215. package/source/class/qx/ui/mobile/container/MIScroll.js +108 -100
  1216. package/source/class/qx/ui/mobile/container/MNativeScroll.js +118 -102
  1217. package/source/class/qx/ui/mobile/container/MScrollHandling.js +8 -7
  1218. package/source/class/qx/ui/mobile/container/Navigation.js +46 -65
  1219. package/source/class/qx/ui/mobile/container/Scroll.js +140 -151
  1220. package/source/class/qx/ui/mobile/control/Picker.js +125 -112
  1221. package/source/class/qx/ui/mobile/core/Blocker.js +62 -71
  1222. package/source/class/qx/ui/mobile/core/DomUpdatedHandler.js +24 -60
  1223. package/source/class/qx/ui/mobile/core/EventHandler.js +158 -138
  1224. package/source/class/qx/ui/mobile/core/MChildrenHandling.js +14 -30
  1225. package/source/class/qx/ui/mobile/core/MLayoutHandling.js +6 -14
  1226. package/source/class/qx/ui/mobile/core/MResize.js +16 -30
  1227. package/source/class/qx/ui/mobile/core/Root.js +90 -80
  1228. package/source/class/qx/ui/mobile/core/Widget.js +351 -479
  1229. package/source/class/qx/ui/mobile/dialog/BusyIndicator.js +31 -46
  1230. package/source/class/qx/ui/mobile/dialog/Manager.js +127 -89
  1231. package/source/class/qx/ui/mobile/dialog/Menu.js +111 -122
  1232. package/source/class/qx/ui/mobile/dialog/Popup.js +202 -194
  1233. package/source/class/qx/ui/mobile/embed/Canvas.js +12 -25
  1234. package/source/class/qx/ui/mobile/embed/Html.js +13 -27
  1235. package/source/class/qx/ui/mobile/form/Button.js +12 -18
  1236. package/source/class/qx/ui/mobile/form/CheckBox.js +20 -35
  1237. package/source/class/qx/ui/mobile/form/Form.js +31 -51
  1238. package/source/class/qx/ui/mobile/form/Group.js +18 -30
  1239. package/source/class/qx/ui/mobile/form/Input.js +30 -35
  1240. package/source/class/qx/ui/mobile/form/Label.js +76 -79
  1241. package/source/class/qx/ui/mobile/form/MState.js +20 -27
  1242. package/source/class/qx/ui/mobile/form/MText.js +27 -47
  1243. package/source/class/qx/ui/mobile/form/MValue.js +66 -94
  1244. package/source/class/qx/ui/mobile/form/NumberField.js +30 -47
  1245. package/source/class/qx/ui/mobile/form/PasswordField.js +8 -14
  1246. package/source/class/qx/ui/mobile/form/RadioButton.js +25 -46
  1247. package/source/class/qx/ui/mobile/form/RadioGroup.js +2 -4
  1248. package/source/class/qx/ui/mobile/form/Row.js +14 -29
  1249. package/source/class/qx/ui/mobile/form/SelectBox.js +77 -104
  1250. package/source/class/qx/ui/mobile/form/Slider.js +116 -144
  1251. package/source/class/qx/ui/mobile/form/TextArea.js +26 -39
  1252. package/source/class/qx/ui/mobile/form/TextField.js +18 -28
  1253. package/source/class/qx/ui/mobile/form/Title.js +11 -19
  1254. package/source/class/qx/ui/mobile/form/ToggleButton.js +35 -58
  1255. package/source/class/qx/ui/mobile/form/__init__.js +1 -1
  1256. package/source/class/qx/ui/mobile/form/renderer/AbstractRenderer.js +24 -31
  1257. package/source/class/qx/ui/mobile/form/renderer/Single.js +59 -85
  1258. package/source/class/qx/ui/mobile/form/renderer/SinglePlaceholder.js +8 -16
  1259. package/source/class/qx/ui/mobile/layout/Abstract.js +48 -85
  1260. package/source/class/qx/ui/mobile/layout/AbstractBox.js +93 -125
  1261. package/source/class/qx/ui/mobile/layout/Card.js +133 -116
  1262. package/source/class/qx/ui/mobile/layout/CardAnimation.js +95 -72
  1263. package/source/class/qx/ui/mobile/layout/HBox.js +9 -12
  1264. package/source/class/qx/ui/mobile/layout/VBox.js +9 -12
  1265. package/source/class/qx/ui/mobile/list/IListDelegate.js +5 -9
  1266. package/source/class/qx/ui/mobile/list/List.js +172 -183
  1267. package/source/class/qx/ui/mobile/list/provider/Provider.js +58 -65
  1268. package/source/class/qx/ui/mobile/list/renderer/Abstract.js +54 -82
  1269. package/source/class/qx/ui/mobile/list/renderer/Default.js +39 -55
  1270. package/source/class/qx/ui/mobile/list/renderer/group/Abstract.js +20 -33
  1271. package/source/class/qx/ui/mobile/list/renderer/group/Default.js +29 -45
  1272. package/source/class/qx/ui/mobile/navigationbar/BackButton.js +11 -15
  1273. package/source/class/qx/ui/mobile/navigationbar/Button.js +11 -15
  1274. package/source/class/qx/ui/mobile/navigationbar/NavigationBar.js +23 -29
  1275. package/source/class/qx/ui/mobile/navigationbar/Title.js +12 -20
  1276. package/source/class/qx/ui/mobile/page/Manager.js +195 -169
  1277. package/source/class/qx/ui/mobile/page/NavigationPage.js +132 -196
  1278. package/source/class/qx/ui/mobile/page/Page.js +109 -148
  1279. package/source/class/qx/ui/mobile/tabbar/TabBar.js +41 -62
  1280. package/source/class/qx/ui/mobile/tabbar/TabButton.js +19 -28
  1281. package/source/class/qx/ui/mobile/toolbar/Button.js +7 -11
  1282. package/source/class/qx/ui/mobile/toolbar/Separator.js +11 -15
  1283. package/source/class/qx/ui/mobile/toolbar/ToolBar.js +30 -39
  1284. package/source/class/qx/ui/popup/Manager.js +41 -53
  1285. package/source/class/qx/ui/popup/Popup.js +22 -47
  1286. package/source/class/qx/ui/popup/__init__.js +32 -32
  1287. package/source/class/qx/ui/progressive/Progressive.js +96 -137
  1288. package/source/class/qx/ui/progressive/State.js +12 -19
  1289. package/source/class/qx/ui/progressive/headfoot/Abstract.js +10 -15
  1290. package/source/class/qx/ui/progressive/headfoot/Null.js +4 -7
  1291. package/source/class/qx/ui/progressive/headfoot/Progress.js +67 -69
  1292. package/source/class/qx/ui/progressive/headfoot/TableHeading.js +42 -54
  1293. package/source/class/qx/ui/progressive/model/Abstract.js +8 -15
  1294. package/source/class/qx/ui/progressive/model/Default.js +17 -29
  1295. package/source/class/qx/ui/progressive/renderer/Abstract.js +6 -11
  1296. package/source/class/qx/ui/progressive/renderer/FunctionCaller.js +4 -7
  1297. package/source/class/qx/ui/progressive/renderer/table/Row.js +215 -242
  1298. package/source/class/qx/ui/progressive/renderer/table/Widths.js +32 -47
  1299. package/source/class/qx/ui/progressive/renderer/table/cell/Abstract.js +17 -24
  1300. package/source/class/qx/ui/progressive/renderer/table/cell/Boolean.js +68 -79
  1301. package/source/class/qx/ui/progressive/renderer/table/cell/Conditional.js +146 -199
  1302. package/source/class/qx/ui/progressive/renderer/table/cell/Default.js +14 -32
  1303. package/source/class/qx/ui/progressive/renderer/table/cell/Html.js +2 -3
  1304. package/source/class/qx/ui/progressive/renderer/table/cell/Icon.js +38 -53
  1305. package/source/class/qx/ui/progressive/renderer/table/cell/Image.js +20 -42
  1306. package/source/class/qx/ui/progressive/renderer/table/cell/String.js +6 -12
  1307. package/source/class/qx/ui/progressive/structure/Abstract.js +14 -26
  1308. package/source/class/qx/ui/progressive/structure/Default.js +20 -40
  1309. package/source/class/qx/ui/root/Abstract.js +73 -90
  1310. package/source/class/qx/ui/root/Application.js +57 -61
  1311. package/source/class/qx/ui/root/Inline.js +78 -64
  1312. package/source/class/qx/ui/root/Page.js +25 -46
  1313. package/source/class/qx/ui/splitpane/Blocker.js +23 -30
  1314. package/source/class/qx/ui/splitpane/HLayout.js +53 -49
  1315. package/source/class/qx/ui/splitpane/Pane.js +115 -150
  1316. package/source/class/qx/ui/splitpane/Slider.js +9 -15
  1317. package/source/class/qx/ui/splitpane/Splitter.js +27 -46
  1318. package/source/class/qx/ui/splitpane/VLayout.js +53 -49
  1319. package/source/class/qx/ui/style/Stylesheet.js +12 -19
  1320. package/source/class/qx/ui/table/ICellEditorFactory.js +4 -8
  1321. package/source/class/qx/ui/table/ICellRenderer.js +3 -7
  1322. package/source/class/qx/ui/table/IColumnMenuButton.js +6 -11
  1323. package/source/class/qx/ui/table/IColumnMenuItem.js +5 -8
  1324. package/source/class/qx/ui/table/IHeaderRenderer.js +4 -8
  1325. package/source/class/qx/ui/table/IRowRenderer.js +6 -12
  1326. package/source/class/qx/ui/table/ITableModel.js +23 -41
  1327. package/source/class/qx/ui/table/MTableContextMenu.js +25 -28
  1328. package/source/class/qx/ui/table/Table.js +573 -743
  1329. package/source/class/qx/ui/table/celleditor/AbstractField.js +16 -26
  1330. package/source/class/qx/ui/table/celleditor/CheckBox.js +15 -16
  1331. package/source/class/qx/ui/table/celleditor/ComboBox.js +24 -34
  1332. package/source/class/qx/ui/table/celleditor/Dynamic.js +25 -32
  1333. package/source/class/qx/ui/table/celleditor/PasswordField.js +4 -8
  1334. package/source/class/qx/ui/table/celleditor/SelectBox.js +29 -38
  1335. package/source/class/qx/ui/table/celleditor/TextField.js +9 -14
  1336. package/source/class/qx/ui/table/cellrenderer/Abstract.js +79 -72
  1337. package/source/class/qx/ui/table/cellrenderer/AbstractImage.js +71 -86
  1338. package/source/class/qx/ui/table/cellrenderer/Boolean.js +36 -50
  1339. package/source/class/qx/ui/table/cellrenderer/Conditional.js +74 -63
  1340. package/source/class/qx/ui/table/cellrenderer/Date.js +12 -22
  1341. package/source/class/qx/ui/table/cellrenderer/Debug.js +9 -9
  1342. package/source/class/qx/ui/table/cellrenderer/Default.js +30 -52
  1343. package/source/class/qx/ui/table/cellrenderer/Dynamic.js +13 -24
  1344. package/source/class/qx/ui/table/cellrenderer/Html.js +6 -8
  1345. package/source/class/qx/ui/table/cellrenderer/Image.js +13 -26
  1346. package/source/class/qx/ui/table/cellrenderer/Number.js +13 -24
  1347. package/source/class/qx/ui/table/cellrenderer/Password.js +8 -11
  1348. package/source/class/qx/ui/table/cellrenderer/Replace.js +27 -42
  1349. package/source/class/qx/ui/table/cellrenderer/String.js +5 -7
  1350. package/source/class/qx/ui/table/columnmenu/Button.js +19 -29
  1351. package/source/class/qx/ui/table/columnmenu/MenuItem.js +11 -19
  1352. package/source/class/qx/ui/table/columnmenu/__init__.js +4 -4
  1353. package/source/class/qx/ui/table/columnmenu/grid/__init__.js +4 -4
  1354. package/source/class/qx/ui/table/columnmenu/simple/__init__.js +4 -4
  1355. package/source/class/qx/ui/table/columnmodel/Basic.js +193 -215
  1356. package/source/class/qx/ui/table/columnmodel/Resize.js +65 -111
  1357. package/source/class/qx/ui/table/columnmodel/resizebehavior/Abstract.js +17 -24
  1358. package/source/class/qx/ui/table/columnmodel/resizebehavior/Default.js +66 -117
  1359. package/source/class/qx/ui/table/headerrenderer/Default.js +25 -46
  1360. package/source/class/qx/ui/table/headerrenderer/HeaderCell.js +39 -51
  1361. package/source/class/qx/ui/table/headerrenderer/Icon.js +11 -27
  1362. package/source/class/qx/ui/table/model/Abstract.js +52 -62
  1363. package/source/class/qx/ui/table/model/Filtered.js +121 -153
  1364. package/source/class/qx/ui/table/model/Remote.js +166 -271
  1365. package/source/class/qx/ui/table/model/Simple.js +215 -250
  1366. package/source/class/qx/ui/table/pane/CellEvent.js +25 -32
  1367. package/source/class/qx/ui/table/pane/Clipper.js +8 -12
  1368. package/source/class/qx/ui/table/pane/FocusIndicator.js +42 -48
  1369. package/source/class/qx/ui/table/pane/Header.js +48 -86
  1370. package/source/class/qx/ui/table/pane/Model.js +80 -97
  1371. package/source/class/qx/ui/table/pane/Pane.js +129 -189
  1372. package/source/class/qx/ui/table/pane/Scroller.js +542 -663
  1373. package/source/class/qx/ui/table/rowrenderer/Default.js +76 -87
  1374. package/source/class/qx/ui/table/selection/Manager.js +23 -57
  1375. package/source/class/qx/ui/table/selection/Model.js +89 -179
  1376. package/source/class/qx/ui/tabview/Page.js +69 -74
  1377. package/source/class/qx/ui/tabview/TabButton.js +45 -72
  1378. package/source/class/qx/ui/tabview/TabView.js +96 -140
  1379. package/source/class/qx/ui/toolbar/Button.js +13 -43
  1380. package/source/class/qx/ui/toolbar/CheckBox.js +12 -43
  1381. package/source/class/qx/ui/toolbar/MenuButton.js +18 -34
  1382. package/source/class/qx/ui/toolbar/Part.js +42 -64
  1383. package/source/class/qx/ui/toolbar/PartContainer.js +19 -28
  1384. package/source/class/qx/ui/toolbar/RadioButton.js +29 -15
  1385. package/source/class/qx/ui/toolbar/Separator.js +15 -25
  1386. package/source/class/qx/ui/toolbar/SplitButton.js +18 -55
  1387. package/source/class/qx/ui/toolbar/ToolBar.js +185 -232
  1388. package/source/class/qx/ui/tooltip/Manager.js +125 -123
  1389. package/source/class/qx/ui/tooltip/ToolTip.js +49 -79
  1390. package/source/class/qx/ui/tooltip/__init__.js +23 -23
  1391. package/source/class/qx/ui/tree/Tree.js +95 -148
  1392. package/source/class/qx/ui/tree/TreeFile.js +8 -15
  1393. package/source/class/qx/ui/tree/TreeFolder.js +8 -15
  1394. package/source/class/qx/ui/tree/VirtualTree.js +207 -333
  1395. package/source/class/qx/ui/tree/VirtualTreeItem.js +30 -45
  1396. package/source/class/qx/ui/tree/__init__.js +50 -50
  1397. package/source/class/qx/ui/tree/core/AbstractItem.js +98 -152
  1398. package/source/class/qx/ui/tree/core/AbstractTreeItem.js +83 -137
  1399. package/source/class/qx/ui/tree/core/FolderOpenButton.js +15 -34
  1400. package/source/class/qx/ui/tree/core/IVirtualTree.js +13 -33
  1401. package/source/class/qx/ui/tree/core/IVirtualTreeDelegate.js +9 -16
  1402. package/source/class/qx/ui/tree/core/MWidgetController.js +58 -69
  1403. package/source/class/qx/ui/tree/core/OpenCloseController.js +29 -35
  1404. package/source/class/qx/ui/tree/core/Util.js +12 -16
  1405. package/source/class/qx/ui/tree/provider/IVirtualTreeProvider.js +10 -23
  1406. package/source/class/qx/ui/tree/provider/WidgetProvider.js +39 -67
  1407. package/source/class/qx/ui/tree/selection/SelectionManager.js +27 -41
  1408. package/source/class/qx/ui/treevirtual/DefaultDataCellRenderer.js +2 -3
  1409. package/source/class/qx/ui/treevirtual/MFamily.js +26 -63
  1410. package/source/class/qx/ui/treevirtual/MNode.js +43 -103
  1411. package/source/class/qx/ui/treevirtual/MTreePrimitive.js +41 -52
  1412. package/source/class/qx/ui/treevirtual/SelectionManager.js +44 -58
  1413. package/source/class/qx/ui/treevirtual/SimpleTreeDataCellRenderer.js +172 -229
  1414. package/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js +256 -367
  1415. package/source/class/qx/ui/treevirtual/SimpleTreeDataRowRenderer.js +8 -18
  1416. package/source/class/qx/ui/treevirtual/TreeVirtual.js +155 -250
  1417. package/source/class/qx/ui/treevirtual/celleditor/NodeEditor.js +10 -16
  1418. package/source/class/qx/ui/treevirtual/pane/Scroller.js +14 -11
  1419. package/source/class/qx/ui/virtual/__init__.js +4 -4
  1420. package/source/class/qx/ui/virtual/behavior/Prefetch.js +71 -86
  1421. package/source/class/qx/ui/virtual/cell/Abstract.js +18 -27
  1422. package/source/class/qx/ui/virtual/cell/AbstractImage.js +42 -51
  1423. package/source/class/qx/ui/virtual/cell/AbstractWidget.js +25 -49
  1424. package/source/class/qx/ui/virtual/cell/Boolean.js +31 -44
  1425. package/source/class/qx/ui/virtual/cell/Cell.js +143 -183
  1426. package/source/class/qx/ui/virtual/cell/CellStylesheet.js +31 -38
  1427. package/source/class/qx/ui/virtual/cell/Date.js +15 -24
  1428. package/source/class/qx/ui/virtual/cell/Html.js +9 -20
  1429. package/source/class/qx/ui/virtual/cell/ICell.js +4 -6
  1430. package/source/class/qx/ui/virtual/cell/IWidgetCell.js +7 -12
  1431. package/source/class/qx/ui/virtual/cell/IWidgetCellDelegate.js +4 -6
  1432. package/source/class/qx/ui/virtual/cell/Image.js +8 -14
  1433. package/source/class/qx/ui/virtual/cell/Number.js +14 -23
  1434. package/source/class/qx/ui/virtual/cell/String.js +11 -20
  1435. package/source/class/qx/ui/virtual/cell/WidgetCell.js +13 -16
  1436. package/source/class/qx/ui/virtual/cell/__init__.js +4 -4
  1437. package/source/class/qx/ui/virtual/core/Axis.js +75 -103
  1438. package/source/class/qx/ui/virtual/core/CellEvent.js +23 -31
  1439. package/source/class/qx/ui/virtual/core/IHtmlCellProvider.js +4 -6
  1440. package/source/class/qx/ui/virtual/core/ILayer.js +5 -15
  1441. package/source/class/qx/ui/virtual/core/IWidgetCellProvider.js +5 -7
  1442. package/source/class/qx/ui/virtual/core/Pane.js +199 -242
  1443. package/source/class/qx/ui/virtual/core/Scroller.js +25 -43
  1444. package/source/class/qx/ui/virtual/layer/Abstract.js +44 -83
  1445. package/source/class/qx/ui/virtual/layer/AbstractBackground.js +47 -68
  1446. package/source/class/qx/ui/virtual/layer/CellSpanManager.js +74 -96
  1447. package/source/class/qx/ui/virtual/layer/Column.js +26 -36
  1448. package/source/class/qx/ui/virtual/layer/GridLines.js +43 -70
  1449. package/source/class/qx/ui/virtual/layer/HtmlCell.js +34 -32
  1450. package/source/class/qx/ui/virtual/layer/HtmlCellSpan.js +54 -56
  1451. package/source/class/qx/ui/virtual/layer/Row.js +28 -36
  1452. package/source/class/qx/ui/virtual/layer/WidgetCell.js +87 -123
  1453. package/source/class/qx/ui/virtual/layer/WidgetCellSpan.js +123 -124
  1454. package/source/class/qx/ui/virtual/selection/Abstract.js +26 -54
  1455. package/source/class/qx/ui/virtual/selection/CellLines.js +11 -21
  1456. package/source/class/qx/ui/virtual/selection/CellRectangle.js +45 -73
  1457. package/source/class/qx/ui/virtual/selection/Column.js +16 -35
  1458. package/source/class/qx/ui/virtual/selection/ISelectionDelegate.js +5 -9
  1459. package/source/class/qx/ui/virtual/selection/MModel.js +84 -122
  1460. package/source/class/qx/ui/virtual/selection/Row.js +29 -61
  1461. package/source/class/qx/ui/website/Accordion.js +39 -42
  1462. package/source/class/qx/ui/website/Button.js +17 -25
  1463. package/source/class/qx/ui/website/Calendar.js +243 -172
  1464. package/source/class/qx/ui/website/Carousel.js +169 -155
  1465. package/source/class/qx/ui/website/DatePicker.js +99 -85
  1466. package/source/class/qx/ui/website/Rating.js +35 -53
  1467. package/source/class/qx/ui/website/Slider.js +174 -153
  1468. package/source/class/qx/ui/website/Table.js +482 -456
  1469. package/source/class/qx/ui/website/Tabs.js +225 -180
  1470. package/source/class/qx/ui/website/Widget.js +39 -52
  1471. package/source/class/qx/ui/window/Desktop.js +14 -12
  1472. package/source/class/qx/ui/window/IDesktop.js +8 -10
  1473. package/source/class/qx/ui/window/IWindowManager.js +7 -9
  1474. package/source/class/qx/ui/window/MDesktop.js +34 -62
  1475. package/source/class/qx/ui/window/Manager.js +31 -57
  1476. package/source/class/qx/ui/window/Window.js +256 -349
  1477. package/source/class/qx/util/AliasManager.js +23 -42
  1478. package/source/class/qx/util/Animation.js +248 -191
  1479. package/source/class/qx/util/Base64.js +144 -89
  1480. package/source/class/qx/util/ColorUtil.js +253 -287
  1481. package/source/class/qx/util/DeferredCall.js +21 -30
  1482. package/source/class/qx/util/DeferredCallManager.js +23 -44
  1483. package/source/class/qx/util/Delegate.js +4 -10
  1484. package/source/class/qx/util/DisposeUtil.js +76 -70
  1485. package/source/class/qx/util/DynamicScriptLoader.js +83 -66
  1486. package/source/class/qx/util/EditDistance.js +64 -58
  1487. package/source/class/qx/util/ExtendedColor.js +157 -163
  1488. package/source/class/qx/util/Function.js +8 -8
  1489. package/source/class/qx/util/LibraryManager.js +11 -18
  1490. package/source/class/qx/util/OOUtil.js +17 -36
  1491. package/source/class/qx/util/ObjectPool.js +19 -45
  1492. package/source/class/qx/util/Permutation.js +9 -16
  1493. package/source/class/qx/util/PropertyUtil.js +58 -70
  1494. package/source/class/qx/util/Request.js +27 -16
  1495. package/source/class/qx/util/ResourceManager.js +103 -104
  1496. package/source/class/qx/util/ResponseParser.js +14 -21
  1497. package/source/class/qx/util/RingBuffer.js +46 -48
  1498. package/source/class/qx/util/Serializer.js +103 -68
  1499. package/source/class/qx/util/StringBuilder.js +11 -22
  1500. package/source/class/qx/util/StringEscape.js +15 -29
  1501. package/source/class/qx/util/StringSplit.js +18 -21
  1502. package/source/class/qx/util/TimerManager.js +61 -70
  1503. package/source/class/qx/util/Uri.js +42 -30
  1504. package/source/class/qx/util/Uuid.js +50 -35
  1505. package/source/class/qx/util/Validate.js +88 -73
  1506. package/source/class/qx/util/ValueManager.js +17 -29
  1507. package/source/class/qx/util/Wheel.js +22 -16
  1508. package/source/class/qx/util/format/DateFormat.js +853 -763
  1509. package/source/class/qx/util/format/IFormat.js +4 -8
  1510. package/source/class/qx/util/format/NumberFormat.js +84 -91
  1511. package/source/class/qx/util/fsm/FiniteStateMachine.js +323 -382
  1512. package/source/class/qx/util/fsm/State.js +210 -249
  1513. package/source/class/qx/util/fsm/Transition.js +138 -160
  1514. package/source/class/qx/util/placement/AbstractAxis.js +12 -14
  1515. package/source/class/qx/util/placement/BestFitAxis.js +5 -8
  1516. package/source/class/qx/util/placement/DirectAxis.js +5 -7
  1517. package/source/class/qx/util/placement/KeepAlignAxis.js +8 -14
  1518. package/source/class/qx/util/placement/Placement.js +39 -56
  1519. package/source/class/qx/util/placement/__init__.js +4 -4
  1520. package/source/class/qx/xml/Document.js +21 -34
  1521. package/source/class/qx/xml/Element.js +90 -73
  1522. package/source/class/qx/xml/String.js +15 -21
  1523. package/source/class/qxWeb.js +104 -69
  1524. package/source/resource/qx/decoration/Indigo/font/JosefinSlab-SemiBold.ttf +0 -0
  1525. package/source/resource/qx/decoration/Indigo/font/SIL Open Font License 1.1.txt +0 -0
  1526. package/source/resource/qx/iconfont/MaterialIcons/fetch-fonts.sh +0 -0
  1527. package/source/resource/qx/mobile/js/iscroll.js +1328 -982
  1528. package/source/resource/qx/mobile/js/iscroll.min.js +1081 -1
  1529. package/source/resource/qx/mobile/scss/common/_gradients.scss +3 -1
  1530. package/source/resource/qx/mobile/scss/theme/indigo/_styles.scss +1 -1
  1531. package/source/resource/qx/mobile/scss/ui/_carousel.scss +2 -2
  1532. package/source/resource/qx/mobile/scss/ui/_checkbox.scss +3 -3
  1533. package/source/resource/qx/mobile/scss/ui/_collapsible.scss +2 -2
  1534. package/source/resource/qx/mobile/scss/ui/_picker.scss +4 -4
  1535. package/source/resource/qx/mobile/scss/ui/_radiobutton.scss +4 -4
  1536. package/source/resource/qx/mobile/scss/ui/_slider.scss +7 -7
  1537. package/source/resource/qx/scss/_gradients.scss +3 -1
  1538. package/source/resource/qx/scss/_mixins.scss +4 -2
  1539. package/source/resource/qx/test/dynamicscriptloader/first.js +1 -1
  1540. package/source/resource/qx/test/dynamicscriptloader/second.js +1 -1
  1541. package/source/resource/qx/test/dynamicscriptloader/third.js +1 -1
  1542. package/source/resource/qx/test/script.js +1 -1
  1543. package/source/resource/qx/test/webworker.js +2 -2
  1544. package/source/resource/qx/tool/bin/build-devtools +0 -0
  1545. package/source/resource/qx/tool/bin/build-website +0 -0
  1546. package/source/resource/qx/tool/bin/download-assets +0 -0
  1547. package/source/resource/qx/tool/cli/templates/loader/loader-node.tmpl.js +3 -1
  1548. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/scss/_styles.scss +1 -1
  1549. package/source/resource/qx/tool/cli/templates/template_vars.js +1 -1
  1550. package/source/resource/qx/tool/loadsass.js +16 -21
  1551. package/source/resource/qx/tool/schema/Manifest-1-0-0.json +1 -2
  1552. package/source/resource/qx/tool/schema/Manifest-2-0-0.json +1 -2
  1553. package/source/resource/qx/tool/schema/compile-1-0-0.json +16 -20
  1554. package/source/resource/qx/tool/website/build/assets/bluebird.min.js +4593 -9
  1555. package/source/resource/qx/tool/website/build/assets/buttons.js +391 -1
  1556. package/source/resource/qx/tool/website/build/assets/fontawesome-all.js +8963 -1
  1557. package/source/resource/qx/tool/website/build/assets/jquery.js +5452 -3
  1558. package/source/resource/qx/tool/website/build/diagnostics/dependson.js +31 -31
  1559. package/source/resource/qx/tool/website/build/diagnostics/requiredby.js +32 -36
  1560. package/source/resource/qx/tool/website/build/scripts/serve.js +87 -66
  1561. package/source/resource/qx/tool/website/src/assets/bluebird.min.js +4593 -9
  1562. package/source/resource/qx/tool/website/src/assets/buttons.js +391 -1
  1563. package/source/resource/qx/tool/website/src/assets/fontawesome-all.js +8963 -1
  1564. package/source/resource/qx/tool/website/src/assets/jquery.js +5452 -3
  1565. package/source/resource/qx/tool/website/src/diagnostics/dependson.js +31 -31
  1566. package/source/resource/qx/tool/website/src/diagnostics/requiredby.js +32 -36
  1567. package/source/resource/qx/tool/website/src/scripts/serve.js +87 -66
  1568. package/source/resource/qx/website/scss/ui/_carousel.scss +2 -2
  1569. package/source/translation/hr.po +297 -0
  1570. package/lib/resource/qx/static/blank.gif +0 -0
  1571. package/lib/resource/qx/tool/website/.gitignore +0 -2
  1572. package/source/class/qx/io/remote/Exchange.js +0 -1063
  1573. package/source/class/qx/io/remote/Request.js +0 -1021
  1574. package/source/class/qx/io/remote/RequestQueue.js +0 -521
  1575. package/source/class/qx/io/remote/Response.js +0 -137
  1576. package/source/class/qx/io/remote/Rpc.js +0 -1075
  1577. package/source/class/qx/io/remote/RpcError.js +0 -198
  1578. package/source/class/qx/io/remote/__init__.js +0 -88
  1579. package/source/class/qx/io/remote/transport/Abstract.js +0 -513
  1580. package/source/class/qx/io/remote/transport/Iframe.js +0 -652
  1581. package/source/class/qx/io/remote/transport/Script.js +0 -475
  1582. package/source/class/qx/io/remote/transport/XmlHttp.js +0 -1019
  1583. package/source/class/qx/io/remote/transport/__init__.js +0 -3
  1584. package/source/class/qx/io/request/auth/.gitignore +0 -0
  1585. package/source/class/qx/test/bom/client/.gitignore +0 -0
  1586. package/source/class/qx/test/io/remote/AbstractRequest.js +0 -150
  1587. package/source/class/qx/test/io/remote/RequestIframe.js +0 -105
  1588. package/source/class/qx/test/io/remote/RequestXhr.js +0 -151
  1589. package/source/class/qx/test/io/remote/Rpc.js +0 -205
  1590. package/source/class/qx/test/io/remote/__init__.js +0 -4
  1591. package/source/class/qx/test/io/remote/transport/Iframe.js +0 -67
  1592. package/source/class/qx/test/io/remote/transport/XmlHttp.js +0 -133
  1593. package/source/class/qx/test/io/remote/transport/__init__.js +0 -4
  1594. package/source/class/qx/test/ui/control/.gitignore +0 -0
  1595. package/source/resource/qx/decoration/Modern/treevirtual/.gitignore +0 -0
  1596. package/source/resource/qx/mobile/css/.gitignore +0 -3
  1597. package/source/resource/qx/tool/website/.gitignore +0 -2
  1598. package/source/resource/qx/website/.gitignore +0 -1
  1599. package/source/resource/qx/website/scss/.gitignore +0 -1
@@ -59,10 +59,8 @@
59
59
  * Exposes (potentially polyfilled or patched) window.JSON to qooxdoo
60
60
  * (enabled by <a href="https://github.com/bestiejs/json3">JSON 3</a>).
61
61
  */
62
- qx.Bootstrap.define("qx.lang.Json",
63
- {
64
- statics :
65
- {
62
+ qx.Bootstrap.define("qx.lang.Json", {
63
+ statics: {
66
64
  /**
67
65
  * This method produces a JSON text from a JavaScript value.
68
66
  *
@@ -151,8 +149,7 @@ qx.Bootstrap.define("qx.lang.Json",
151
149
  *
152
150
  * @return {String} The JSON string of the value
153
151
  */
154
- stringify : null, // will be set after the polyfill
155
-
152
+ stringify: null, // will be set after the polyfill
156
153
 
157
154
  /**
158
155
  * This method parses a JSON text to produce an object or array.
@@ -205,7 +202,7 @@ qx.Bootstrap.define("qx.lang.Json",
205
202
  *
206
203
  * @return {Object} The parsed JSON object
207
204
  */
208
- parse : null // will be set after the polyfill
205
+ parse: null // will be set after the polyfill
209
206
  }
210
207
  });
211
208
 
@@ -227,864 +224,1134 @@ qx.Bootstrap.define("qx.lang.Json",
227
224
  // by shadowing global define function
228
225
  var define;
229
226
 
227
+ /*! JSON v3.2.5 | http://bestiejs.github.io/json3 | Copyright 2012-2013, Kit Cambridge | http://kit.mit-license.org */
228
+ (function (window) {
229
+ // This polyfill does not work under Rhino because it cannot convert POJO to object (it tries
230
+ // to serialize the class)
231
+ if (
232
+ qx.core.Environment.get("runtime.name") === "rhino" ||
233
+ qx.core.Environment.get("runtime.name") === undefined
234
+ )
235
+ return;
230
236
 
231
- /*! JSON v3.2.5 | http://bestiejs.github.io/json3 | Copyright 2012-2013, Kit Cambridge | http://kit.mit-license.org */
232
- (function (window) {
233
- // This polyfill does not work under Rhino because it cannot convert POJO to object (it tries
234
- // to serialize the class)
235
- if (qx.core.Environment.get("runtime.name") === "rhino" || qx.core.Environment.get("runtime.name") === undefined)
236
- return;
237
-
238
- // Convenience aliases.
239
- var getClass = {}.toString, isProperty, forEach, undef;
237
+ // Convenience aliases.
238
+ var getClass = {}.toString,
239
+ isProperty,
240
+ forEach,
241
+ undef;
240
242
 
241
- // Detect the `define` function exposed by asynchronous module loaders. The
242
- // strict `define` check is necessary for compatibility with `r.js`.
243
- var isLoader = typeof define === "function" && define.amd, JSON3 = typeof exports === "object" && exports;
243
+ // Detect the `define` function exposed by asynchronous module loaders. The
244
+ // strict `define` check is necessary for compatibility with `r.js`.
245
+ var isLoader = typeof define === "function" && define.amd,
246
+ JSON3 = typeof exports === "object" && exports;
244
247
 
245
- if (JSON3 || isLoader) {
246
- if (typeof JSON === "object" && JSON) {
247
- // Delegate to the native `stringify` and `parse` implementations in
248
- // asynchronous module loaders and CommonJS environments.
249
- if (JSON3) {
250
- JSON3.stringify = JSON.stringify;
251
- JSON3.parse = JSON.parse;
252
- } else {
253
- JSON3 = JSON;
248
+ if (JSON3 || isLoader) {
249
+ if (typeof JSON === "object" && JSON) {
250
+ // Delegate to the native `stringify` and `parse` implementations in
251
+ // asynchronous module loaders and CommonJS environments.
252
+ if (JSON3) {
253
+ JSON3.stringify = JSON.stringify;
254
+ JSON3.parse = JSON.parse;
255
+ } else {
256
+ JSON3 = JSON;
257
+ }
258
+ } else if (isLoader) {
259
+ JSON3 = window.JSON = {};
254
260
  }
255
- } else if (isLoader) {
256
- JSON3 = window.JSON = {};
261
+ } else {
262
+ // Export for web browsers and JavaScript engines.
263
+ JSON3 = window.JSON || (window.JSON = {});
257
264
  }
258
- } else {
259
- // Export for web browsers and JavaScript engines.
260
- JSON3 = window.JSON || (window.JSON = {});
261
- }
262
265
 
263
- // Test the `Date#getUTC*` methods. Based on work by @Yaffle.
264
- var isExtended = new Date(-3509827334573292);
265
- try {
266
- // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical
267
- // results for certain dates in Opera >= 10.53.
268
- isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&
269
- // Safari < 2.0.2 stores the internal millisecond time value correctly,
270
- // but clips the values returned by the date methods to the range of
271
- // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).
272
- isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;
273
- } catch (exception) {}
266
+ // Test the `Date#getUTC*` methods. Based on work by @Yaffle.
267
+ var isExtended = new Date(-3509827334573292);
268
+ try {
269
+ // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical
270
+ // results for certain dates in Opera >= 10.53.
271
+ isExtended =
272
+ isExtended.getUTCFullYear() == -109252 &&
273
+ isExtended.getUTCMonth() === 0 &&
274
+ isExtended.getUTCDate() === 1 &&
275
+ // Safari < 2.0.2 stores the internal millisecond time value correctly,
276
+ // but clips the values returned by the date methods to the range of
277
+ // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).
278
+ isExtended.getUTCHours() == 10 &&
279
+ isExtended.getUTCMinutes() == 37 &&
280
+ isExtended.getUTCSeconds() == 6 &&
281
+ isExtended.getUTCMilliseconds() == 708;
282
+ } catch (exception) {}
274
283
 
275
- // Internal: Determines whether the native `JSON.stringify` and `parse`
276
- // implementations are spec-compliant. Based on work by Ken Snyder.
277
- function has(name) {
278
- if (name === "bug-string-char-index") {
279
- // IE <= 7 doesn't support accessing string characters using square
280
- // bracket notation. IE 8 only supports this for primitives.
281
- return "a"[0] != "a";
282
- }
283
- var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}', isAll = name === "json";
284
- if (isAll || name === "json-stringify" || name === "json-parse") {
285
- // Test `JSON.stringify`.
286
- if (name == "json-stringify" || isAll) {
287
- var stringify = JSON3.stringify, stringifySupported = typeof stringify === "function" && isExtended;
288
- if (stringifySupported) {
289
- // A test function object with a custom `toJSON` method.
290
- (value = function () {
291
- return 1;
292
- }).toJSON = value;
293
- try {
294
- stringifySupported =
295
- // Firefox 3.1b1 and b2 serialize string, number, and boolean
296
- // primitives as object literals.
297
- stringify(0) === "0" &&
298
- // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object
299
- // literals.
300
- stringify(new Number()) === "0" &&
301
- stringify(new String()) === '""' &&
302
- // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or
303
- // does not define a canonical JSON representation (this applies to
304
- // objects with `toJSON` properties as well, *unless* they are nested
305
- // within an object or array).
306
- stringify(getClass) === undef &&
307
- // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and
308
- // FF 3.1b3 pass this test.
309
- stringify(undef) === undef &&
310
- // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,
311
- // respectively, if the value is omitted entirely.
312
- stringify() === undef &&
313
- // FF 3.1b1, 2 throw an error if the given value is not a number,
314
- // string, array, object, Boolean, or `null` literal. This applies to
315
- // objects with custom `toJSON` methods as well, unless they are nested
316
- // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`
317
- // methods entirely.
318
- stringify(value) === "1" &&
319
- stringify([value]) === "[1]" &&
320
- // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of
321
- // `"[null]"`.
322
- stringify([undef]) === "[null]" &&
323
- // YUI 3.0.0b1 fails to serialize `null` literals.
324
- stringify(null) === "null" &&
325
- // FF 3.1b1, 2 halts serialization if an array contains a function:
326
- // `[1, true, getClass, 1]` serializes as "[1,true,],". These versions
327
- // of Firefox also allow trailing commas in JSON objects and arrays.
328
- // FF 3.1b3 elides non-JSON values from objects and arrays, unless they
329
- // define custom `toJSON` methods.
330
- stringify([undef, getClass, null]) === "[null,null,null]" &&
331
- // Simple serialization test. FF 3.1b1 uses Unicode escape sequences
332
- // where character escape codes are expected (e.g., `\b` => `\u0008`).
333
- stringify({ "a": [value, true, false, null, "\x00\b\n\f\r\t"] }) == serialized &&
334
- // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.
335
- stringify(null, value) === "1" &&
336
- stringify([1, 2], null, 1) === "[\n 1,\n 2\n]" &&
337
- // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly
338
- // serialize extended years.
339
- stringify(new Date(-8.64e15)) === '"-271821-04-20T00:00:00.000Z"' &&
340
- // The milliseconds are optional in ES 5, but required in 5.1.
341
- stringify(new Date(8.64e15)) === '"+275760-09-13T00:00:00.000Z"' &&
342
- // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative
343
- // four-digit years instead of six-digit years. Credits: @Yaffle.
344
- stringify(new Date(-621987552e5)) === '"-000001-01-01T00:00:00.000Z"' &&
345
- // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond
346
- // values less than 1000. Credits: @Yaffle.
347
- stringify(new Date(-1)) === '"1969-12-31T23:59:59.999Z"';
348
- } catch (exception) {
349
- stringifySupported = false;
284
+ // Internal: Determines whether the native `JSON.stringify` and `parse`
285
+ // implementations are spec-compliant. Based on work by Ken Snyder.
286
+ function has(name) {
287
+ if (name === "bug-string-char-index") {
288
+ // IE <= 7 doesn't support accessing string characters using square
289
+ // bracket notation. IE 8 only supports this for primitives.
290
+ return "a"[0] != "a";
291
+ }
292
+ var value,
293
+ serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}',
294
+ isAll = name === "json";
295
+ if (isAll || name === "json-stringify" || name === "json-parse") {
296
+ // Test `JSON.stringify`.
297
+ if (name == "json-stringify" || isAll) {
298
+ var stringify = JSON3.stringify,
299
+ stringifySupported = typeof stringify === "function" && isExtended;
300
+ if (stringifySupported) {
301
+ // A test function object with a custom `toJSON` method.
302
+ (value = function () {
303
+ return 1;
304
+ }).toJSON = value;
305
+ try {
306
+ stringifySupported =
307
+ // Firefox 3.1b1 and b2 serialize string, number, and boolean
308
+ // primitives as object literals.
309
+ stringify(0) === "0" &&
310
+ // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object
311
+ // literals.
312
+ stringify(new Number()) === "0" &&
313
+ stringify(new String()) === '""' &&
314
+ // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or
315
+ // does not define a canonical JSON representation (this applies to
316
+ // objects with `toJSON` properties as well, *unless* they are nested
317
+ // within an object or array).
318
+ stringify(getClass) === undef &&
319
+ // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and
320
+ // FF 3.1b3 pass this test.
321
+ stringify(undef) === undef &&
322
+ // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,
323
+ // respectively, if the value is omitted entirely.
324
+ stringify() === undef &&
325
+ // FF 3.1b1, 2 throw an error if the given value is not a number,
326
+ // string, array, object, Boolean, or `null` literal. This applies to
327
+ // objects with custom `toJSON` methods as well, unless they are nested
328
+ // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`
329
+ // methods entirely.
330
+ stringify(value) === "1" &&
331
+ stringify([value]) === "[1]" &&
332
+ // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of
333
+ // `"[null]"`.
334
+ stringify([undef]) === "[null]" &&
335
+ // YUI 3.0.0b1 fails to serialize `null` literals.
336
+ stringify(null) === "null" &&
337
+ // FF 3.1b1, 2 halts serialization if an array contains a function:
338
+ // `[1, true, getClass, 1]` serializes as "[1,true,],". These versions
339
+ // of Firefox also allow trailing commas in JSON objects and arrays.
340
+ // FF 3.1b3 elides non-JSON values from objects and arrays, unless they
341
+ // define custom `toJSON` methods.
342
+ stringify([undef, getClass, null]) === "[null,null,null]" &&
343
+ // Simple serialization test. FF 3.1b1 uses Unicode escape sequences
344
+ // where character escape codes are expected (e.g., `\b` => `\u0008`).
345
+ stringify({
346
+ a: [value, true, false, null, "\x00\b\n\f\r\t"]
347
+ }) == serialized &&
348
+ // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.
349
+ stringify(null, value) === "1" &&
350
+ stringify([1, 2], null, 1) === "[\n 1,\n 2\n]" &&
351
+ // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly
352
+ // serialize extended years.
353
+ stringify(new Date(-8.64e15)) ===
354
+ '"-271821-04-20T00:00:00.000Z"' &&
355
+ // The milliseconds are optional in ES 5, but required in 5.1.
356
+ stringify(new Date(8.64e15)) ===
357
+ '"+275760-09-13T00:00:00.000Z"' &&
358
+ // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative
359
+ // four-digit years instead of six-digit years. Credits: @Yaffle.
360
+ stringify(new Date(-621987552e5)) ===
361
+ '"-000001-01-01T00:00:00.000Z"' &&
362
+ // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond
363
+ // values less than 1000. Credits: @Yaffle.
364
+ stringify(new Date(-1)) === '"1969-12-31T23:59:59.999Z"';
365
+ } catch (exception) {
366
+ stringifySupported = false;
367
+ }
368
+ }
369
+ if (!isAll) {
370
+ return stringifySupported;
350
371
  }
351
372
  }
352
- if (!isAll) {
353
- return stringifySupported;
354
- }
355
- }
356
- // Test `JSON.parse`.
357
- if (name === "json-parse" || isAll) {
358
- var parse = JSON3.parse;
359
- if (typeof parse === "function") {
360
- try {
361
- // FF 3.1b1, b2 will throw an exception if a bare literal is provided.
362
- // Conforming implementations should also coerce the initial argument to
363
- // a string prior to parsing.
364
- if (parse("0") === 0 && !parse(false)) {
365
- // Simple parsing test.
366
- value = parse(serialized);
367
- var parseSupported = value["a"].length == 5 && value["a"][0] === 1;
368
- if (parseSupported) {
369
- try {
370
- // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.
371
- parseSupported = !parse('"\t"');
372
- } catch (exception) {}
373
+ // Test `JSON.parse`.
374
+ if (name === "json-parse" || isAll) {
375
+ var parse = JSON3.parse;
376
+ if (typeof parse === "function") {
377
+ try {
378
+ // FF 3.1b1, b2 will throw an exception if a bare literal is provided.
379
+ // Conforming implementations should also coerce the initial argument to
380
+ // a string prior to parsing.
381
+ if (parse("0") === 0 && !parse(false)) {
382
+ // Simple parsing test.
383
+ value = parse(serialized);
384
+ var parseSupported =
385
+ value["a"].length == 5 && value["a"][0] === 1;
373
386
  if (parseSupported) {
374
387
  try {
375
- // FF 4.0 and 4.0.1 allow leading `+` signs, and leading and
376
- // trailing decimal points. FF 4.0, 4.0.1, and IE 9-10 also
377
- // allow certain octal literals.
378
- parseSupported = parse("01") !== 1;
388
+ // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.
389
+ parseSupported = !parse('"\t"');
379
390
  } catch (exception) {}
391
+ if (parseSupported) {
392
+ try {
393
+ // FF 4.0 and 4.0.1 allow leading `+` signs, and leading and
394
+ // trailing decimal points. FF 4.0, 4.0.1, and IE 9-10 also
395
+ // allow certain octal literals.
396
+ parseSupported = parse("01") !== 1;
397
+ } catch (exception) {}
398
+ }
380
399
  }
381
400
  }
401
+ } catch (exception) {
402
+ parseSupported = false;
382
403
  }
383
- } catch (exception) {
384
- parseSupported = false;
404
+ }
405
+ if (!isAll) {
406
+ return parseSupported;
385
407
  }
386
408
  }
387
- if (!isAll) {
388
- return parseSupported;
389
- }
409
+ return stringifySupported && parseSupported;
390
410
  }
391
- return stringifySupported && parseSupported;
392
411
  }
393
- }
394
412
 
395
- if (!has("json")) {
396
- // Common `[[Class]]` name aliases.
397
- var functionClass = "[object Function]";
398
- var dateClass = "[object Date]";
399
- var numberClass = "[object Number]";
400
- var stringClass = "[object String]";
401
- var arrayClass = "[object Array]";
402
- var booleanClass = "[object Boolean]";
413
+ if (!has("json")) {
414
+ // Common `[[Class]]` name aliases.
415
+ var functionClass = "[object Function]";
416
+ var dateClass = "[object Date]";
417
+ var numberClass = "[object Number]";
418
+ var stringClass = "[object String]";
419
+ var arrayClass = "[object Array]";
420
+ var booleanClass = "[object Boolean]";
403
421
 
404
- // Detect incomplete support for accessing string characters by index.
405
- var charIndexBuggy = has("bug-string-char-index");
422
+ // Detect incomplete support for accessing string characters by index.
423
+ var charIndexBuggy = has("bug-string-char-index");
406
424
 
407
- // Define additional utility methods if the `Date` methods are buggy.
408
- if (!isExtended) {
409
- var floor = Math.floor;
410
- // A mapping between the months of the year and the number of days between
411
- // January 1st and the first of the respective month.
412
- var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
413
- // Internal: Calculates the number of days between the Unix epoch and the
414
- // first day of the given month.
415
- var getDay = function (year, month) {
416
- return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);
417
- };
418
- }
425
+ // Define additional utility methods if the `Date` methods are buggy.
426
+ if (!isExtended) {
427
+ var floor = Math.floor;
428
+ // A mapping between the months of the year and the number of days between
429
+ // January 1st and the first of the respective month.
430
+ var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
431
+ // Internal: Calculates the number of days between the Unix epoch and the
432
+ // first day of the given month.
433
+ var getDay = function (year, month) {
434
+ return (
435
+ Months[month] +
436
+ 365 * (year - 1970) +
437
+ floor((year - 1969 + (month = +(month > 1))) / 4) -
438
+ floor((year - 1901 + month) / 100) +
439
+ floor((year - 1601 + month) / 400)
440
+ );
441
+ };
442
+ }
419
443
 
420
- // Internal: Determines if a property is a direct property of the given
421
- // object. Delegates to the native `Object#hasOwnProperty` method.
422
- if (!(isProperty = {}.hasOwnProperty)) {
423
- isProperty = function (property) {
424
- var members = {}, constructor;
425
- if ((members.__proto__ = null, members.__proto__ = {
426
- // The *proto* property cannot be set multiple times in recent
427
- // versions of Firefox and SeaMonkey.
428
- "toString": 1
429
- }, members).toString != getClass) {
430
- // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but
431
- // supports the mutable *proto* property.
432
- isProperty = function (property) {
433
- // Capture and break the object's prototype chain (see section 8.6.2
434
- // of the ES 5.1 spec). The parenthesized expression prevents an
435
- // unsafe transformation by the Closure Compiler.
436
- var original = this.__proto__, result = property in (this.__proto__ = null, this);
437
- // Restore the original prototype chain.
438
- this.__proto__ = original;
439
- return result;
440
- };
441
- } else {
442
- // Capture a reference to the top-level `Object` constructor.
443
- constructor = members.constructor;
444
- // Use the `constructor` property to simulate `Object#hasOwnProperty` in
445
- // other environments.
446
- isProperty = function (property) {
447
- var parent = (this.constructor || constructor).prototype;
448
- return property in this && !(property in parent && this[property] === parent[property]);
449
- };
450
- }
451
- members = null;
452
- return isProperty.call(this, property);
453
- };
454
- }
444
+ // Internal: Determines if a property is a direct property of the given
445
+ // object. Delegates to the native `Object#hasOwnProperty` method.
446
+ if (!(isProperty = {}.hasOwnProperty)) {
447
+ isProperty = function (property) {
448
+ var members = {},
449
+ constructor;
450
+ if (
451
+ ((members.__proto__ = null),
452
+ (members.__proto__ = {
453
+ // The *proto* property cannot be set multiple times in recent
454
+ // versions of Firefox and SeaMonkey.
455
+ toString: 1
456
+ }),
457
+ members).toString != getClass
458
+ ) {
459
+ // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but
460
+ // supports the mutable *proto* property.
461
+ isProperty = function (property) {
462
+ // Capture and break the object's prototype chain (see section 8.6.2
463
+ // of the ES 5.1 spec). The parenthesized expression prevents an
464
+ // unsafe transformation by the Closure Compiler.
465
+ var original = this.__proto__,
466
+ result = property in ((this.__proto__ = null), this);
467
+ // Restore the original prototype chain.
468
+ this.__proto__ = original;
469
+ return result;
470
+ };
471
+ } else {
472
+ // Capture a reference to the top-level `Object` constructor.
473
+ constructor = members.constructor;
474
+ // Use the `constructor` property to simulate `Object#hasOwnProperty` in
475
+ // other environments.
476
+ isProperty = function (property) {
477
+ var parent = (this.constructor || constructor).prototype;
478
+ return (
479
+ property in this &&
480
+ !(property in parent && this[property] === parent[property])
481
+ );
482
+ };
483
+ }
484
+ members = null;
485
+ return isProperty.call(this, property);
486
+ };
487
+ }
455
488
 
456
- // Internal: A set of primitive types used by `isHostType`.
457
- var PrimitiveTypes = {
458
- 'boolean': 1,
459
- 'number': 1,
460
- 'string': 1,
461
- 'undefined': 1
462
- };
489
+ // Internal: A set of primitive types used by `isHostType`.
490
+ var PrimitiveTypes = {
491
+ boolean: 1,
492
+ number: 1,
493
+ string: 1,
494
+ undefined: 1
495
+ };
463
496
 
464
- // Internal: Determines if the given object `property` value is a
465
- // non-primitive.
466
- var isHostType = function (object, property) {
467
- var type = typeof object[property];
468
- return type == 'object' ? !!object[property] : !PrimitiveTypes[type];
469
- };
497
+ // Internal: Determines if the given object `property` value is a
498
+ // non-primitive.
499
+ var isHostType = function (object, property) {
500
+ var type = typeof object[property];
501
+ return type == "object" ? !!object[property] : !PrimitiveTypes[type];
502
+ };
470
503
 
471
- // Internal: Normalizes the `for...in` iteration algorithm across
472
- // environments. Each enumerated key is yielded to a `callback` function.
473
- forEach = function (object, callback) {
474
- var size = 0, Properties, members, property, forEach;
504
+ // Internal: Normalizes the `for...in` iteration algorithm across
505
+ // environments. Each enumerated key is yielded to a `callback` function.
506
+ forEach = function (object, callback) {
507
+ var size = 0,
508
+ Properties,
509
+ members,
510
+ property,
511
+ forEach;
475
512
 
476
- // Tests for bugs in the current environment's `for...in` algorithm. The
477
- // `valueOf` property inherits the non-enumerable flag from
478
- // `Object.prototype` in older versions of IE, Netscape, and Mozilla.
479
- (Properties = function () {
480
- this.valueOf = 0;
481
- }).prototype.valueOf = 0;
513
+ // Tests for bugs in the current environment's `for...in` algorithm. The
514
+ // `valueOf` property inherits the non-enumerable flag from
515
+ // `Object.prototype` in older versions of IE, Netscape, and Mozilla.
516
+ (Properties = function () {
517
+ this.valueOf = 0;
518
+ }).prototype.valueOf = 0;
482
519
 
483
- // Iterate over a new instance of the `Properties` class.
484
- members = new Properties();
485
- for (property in members) {
486
- // Ignore all properties inherited from `Object.prototype`.
487
- if (isProperty.call(members, property)) {
488
- size++;
520
+ // Iterate over a new instance of the `Properties` class.
521
+ members = new Properties();
522
+ for (property in members) {
523
+ // Ignore all properties inherited from `Object.prototype`.
524
+ if (isProperty.call(members, property)) {
525
+ size++;
526
+ }
489
527
  }
490
- }
491
- Properties = members = null;
528
+ Properties = members = null;
492
529
 
493
- // Normalize the iteration algorithm.
494
- if (!size) {
495
- // A list of non-enumerable properties inherited from `Object.prototype`.
496
- members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"];
497
- // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable
498
- // properties.
499
- forEach = function (object, callback) {
500
- var isFunction = getClass.call(object) == functionClass, property, length;
501
- var hasProperty = !isFunction && typeof object.constructor != 'function' && isHostType(object, 'hasOwnProperty') ? object.hasOwnProperty : isProperty;
502
- for (property in object) {
503
- // Gecko <= 1.0 enumerates the `prototype` property of functions under
504
- // certain conditions; IE does not.
505
- if (!(isFunction && property === "prototype") && hasProperty.call(object, property)) {
506
- callback(property);
530
+ // Normalize the iteration algorithm.
531
+ if (!size) {
532
+ // A list of non-enumerable properties inherited from `Object.prototype`.
533
+ members = [
534
+ "valueOf",
535
+ "toString",
536
+ "toLocaleString",
537
+ "propertyIsEnumerable",
538
+ "isPrototypeOf",
539
+ "hasOwnProperty",
540
+ "constructor"
541
+ ];
542
+
543
+ // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable
544
+ // properties.
545
+ forEach = function (object, callback) {
546
+ var isFunction = getClass.call(object) == functionClass,
547
+ property,
548
+ length;
549
+ var hasProperty =
550
+ !isFunction &&
551
+ typeof object.constructor != "function" &&
552
+ isHostType(object, "hasOwnProperty")
553
+ ? object.hasOwnProperty
554
+ : isProperty;
555
+ for (property in object) {
556
+ // Gecko <= 1.0 enumerates the `prototype` property of functions under
557
+ // certain conditions; IE does not.
558
+ if (
559
+ !(isFunction && property === "prototype") &&
560
+ hasProperty.call(object, property)
561
+ ) {
562
+ callback(property);
563
+ }
507
564
  }
508
- }
509
- // Manually invoke the callback for each non-enumerable property.
510
- for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property));
511
- };
512
- } else if (size == 2) {
513
- // Safari <= 2.0.4 enumerates shadowed properties twice.
514
- forEach = function (object, callback) {
515
- // Create a set of iterated properties.
516
- var members = {}, isFunction = getClass.call(object) == functionClass, property;
517
- for (property in object) {
518
- // Store each property name to prevent double enumeration. The
519
- // `prototype` property of functions is not enumerated due to cross-
520
- // environment inconsistencies.
521
- if (!(isFunction && property === "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {
522
- callback(property);
565
+ // Manually invoke the callback for each non-enumerable property.
566
+ for (
567
+ length = members.length;
568
+ (property = members[--length]);
569
+ hasProperty.call(object, property) && callback(property)
570
+ );
571
+ };
572
+ } else if (size == 2) {
573
+ // Safari <= 2.0.4 enumerates shadowed properties twice.
574
+ forEach = function (object, callback) {
575
+ // Create a set of iterated properties.
576
+ var members = {},
577
+ isFunction = getClass.call(object) == functionClass,
578
+ property;
579
+ for (property in object) {
580
+ // Store each property name to prevent double enumeration. The
581
+ // `prototype` property of functions is not enumerated due to cross-
582
+ // environment inconsistencies.
583
+ if (
584
+ !(isFunction && property === "prototype") &&
585
+ !isProperty.call(members, property) &&
586
+ (members[property] = 1) &&
587
+ isProperty.call(object, property)
588
+ ) {
589
+ callback(property);
590
+ }
523
591
  }
524
- }
525
- };
526
- } else {
527
- // No bugs detected; use the standard `for...in` algorithm.
528
- forEach = function (object, callback) {
529
- var isFunction = getClass.call(object) == functionClass, property, isConstructor;
530
- for (property in object) {
531
- if (!(isFunction && property === "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) {
592
+ };
593
+ } else {
594
+ // No bugs detected; use the standard `for...in` algorithm.
595
+ forEach = function (object, callback) {
596
+ var isFunction = getClass.call(object) == functionClass,
597
+ property,
598
+ isConstructor;
599
+ for (property in object) {
600
+ if (
601
+ !(isFunction && property === "prototype") &&
602
+ isProperty.call(object, property) &&
603
+ !(isConstructor = property === "constructor")
604
+ ) {
605
+ callback(property);
606
+ }
607
+ }
608
+ // Manually invoke the callback for the `constructor` property due to
609
+ // cross-environment inconsistencies.
610
+ if (
611
+ isConstructor ||
612
+ isProperty.call(object, (property = "constructor"))
613
+ ) {
532
614
  callback(property);
533
615
  }
534
- }
535
- // Manually invoke the callback for the `constructor` property due to
536
- // cross-environment inconsistencies.
537
- if (isConstructor || isProperty.call(object, (property = "constructor"))) {
538
- callback(property);
539
- }
540
- };
541
- }
542
- return forEach(object, callback);
543
- };
544
-
545
- // Public: Serializes a JavaScript `value` as a JSON string. The optional
546
- // `filter` argument may specify either a function that alters how object and
547
- // array members are serialized, or an array of strings and numbers that
548
- // indicates which properties should be serialized. The optional `width`
549
- // argument may be either a string or number that specifies the indentation
550
- // level of the output.
551
- if (!has("json-stringify")) {
552
- // Internal: A map of control characters and their escaped equivalents.
553
- var Escapes = {
554
- 92: "\\\\",
555
- 34: '\\"',
556
- 8: "\\b",
557
- 12: "\\f",
558
- 10: "\\n",
559
- 13: "\\r",
560
- 9: "\\t"
616
+ };
617
+ }
618
+ return forEach(object, callback);
561
619
  };
562
620
 
563
- // Internal: Converts `value` into a zero-padded string such that its
564
- // length is at least equal to `width`. The `width` must be <= 6.
565
- var leadingZeroes = "000000";
566
- var toPaddedString = function (width, value) {
567
- // The `|| 0` expression is necessary to work around a bug in
568
- // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.
569
- return (leadingZeroes + (value || 0)).slice(-width);
570
- };
621
+ // Public: Serializes a JavaScript `value` as a JSON string. The optional
622
+ // `filter` argument may specify either a function that alters how object and
623
+ // array members are serialized, or an array of strings and numbers that
624
+ // indicates which properties should be serialized. The optional `width`
625
+ // argument may be either a string or number that specifies the indentation
626
+ // level of the output.
627
+ if (!has("json-stringify")) {
628
+ // Internal: A map of control characters and their escaped equivalents.
629
+ var Escapes = {
630
+ 92: "\\\\",
631
+ 34: '\\"',
632
+ 8: "\\b",
633
+ 12: "\\f",
634
+ 10: "\\n",
635
+ 13: "\\r",
636
+ 9: "\\t"
637
+ };
571
638
 
572
- // Internal: Double-quotes a string `value`, replacing all ASCII control
573
- // characters (characters with code unit values between 0 and 31) with
574
- // their escaped equivalents. This is an implementation of the
575
- // `Quote(value)` operation defined in ES 5.1 section 15.12.3.
576
- var unicodePrefix = "\\u00";
577
- var quote = function (value) {
578
- var result = '"', index = 0, length = value.length, isLarge = length > 10 && charIndexBuggy, symbols;
579
- if (isLarge) {
580
- symbols = value.split("");
581
- }
582
- for (; index < length; index++) {
583
- var charCode = value.charCodeAt(index);
584
- // If the character is a control character, append its Unicode or
585
- // shorthand escape sequence; otherwise, append the character as-is.
586
- switch (charCode) {
587
- case 8: case 9: case 10: case 12: case 13: case 34: case 92:
588
- result += Escapes[charCode];
589
- break;
590
- default:
591
- if (charCode < 32) {
592
- result += unicodePrefix + toPaddedString(2, charCode.toString(16));
639
+ // Internal: Converts `value` into a zero-padded string such that its
640
+ // length is at least equal to `width`. The `width` must be <= 6.
641
+ var leadingZeroes = "000000";
642
+ var toPaddedString = function (width, value) {
643
+ // The `|| 0` expression is necessary to work around a bug in
644
+ // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.
645
+ return (leadingZeroes + (value || 0)).slice(-width);
646
+ };
647
+
648
+ // Internal: Double-quotes a string `value`, replacing all ASCII control
649
+ // characters (characters with code unit values between 0 and 31) with
650
+ // their escaped equivalents. This is an implementation of the
651
+ // `Quote(value)` operation defined in ES 5.1 section 15.12.3.
652
+ var unicodePrefix = "\\u00";
653
+ var quote = function (value) {
654
+ var result = '"',
655
+ index = 0,
656
+ length = value.length,
657
+ isLarge = length > 10 && charIndexBuggy,
658
+ symbols;
659
+ if (isLarge) {
660
+ symbols = value.split("");
661
+ }
662
+ for (; index < length; index++) {
663
+ var charCode = value.charCodeAt(index);
664
+ // If the character is a control character, append its Unicode or
665
+ // shorthand escape sequence; otherwise, append the character as-is.
666
+ switch (charCode) {
667
+ case 8:
668
+ case 9:
669
+ case 10:
670
+ case 12:
671
+ case 13:
672
+ case 34:
673
+ case 92:
674
+ result += Escapes[charCode];
593
675
  break;
594
- }
595
- result += isLarge ? symbols[index] : charIndexBuggy ? value.charAt(index) : value[index];
676
+ default:
677
+ if (charCode < 32) {
678
+ result +=
679
+ unicodePrefix + toPaddedString(2, charCode.toString(16));
680
+ break;
681
+ }
682
+ result += isLarge
683
+ ? symbols[index]
684
+ : charIndexBuggy
685
+ ? value.charAt(index)
686
+ : value[index];
687
+ }
596
688
  }
597
- }
598
- return result + '"';
599
- };
689
+ return result + '"';
690
+ };
600
691
 
601
- // Internal: Recursively serializes an object. Implements the
602
- // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.
603
- var serialize = function (property, object, callback, properties, whitespace, indentation, stack) {
604
- var value = object[property], className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, hasMembers, result;
605
- try {
606
- // Necessary for host object support.
607
- value = object[property];
608
- } catch (exception) {}
609
- if (typeof value === "object" && value) {
610
- className = getClass.call(value);
611
- if (className == dateClass && !isProperty.call(value, "toJSON")) {
612
- if (value > -1 / 0 && value < 1 / 0) {
613
- // Dates are serialized according to the `Date#toJSON` method
614
- // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15
615
- // for the ISO 8601 date time string format.
616
- if (getDay) {
617
- // Manually compute the year, month, date, hours, minutes,
618
- // seconds, and milliseconds if the `getUTC*` methods are
619
- // buggy. Adapted from @Yaffle's `date-shim` project.
620
- date = floor(value / 864e5);
621
- for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++);
622
- for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++);
623
- date = 1 + date - getDay(year, month);
624
- // The `time` value specifies the time within the day (see ES
625
- // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used
626
- // to compute `A modulo B`, as the `%` operator does not
627
- // correspond to the `modulo` operation for negative numbers.
628
- time = (value % 864e5 + 864e5) % 864e5;
629
- // The hours, minutes, seconds, and milliseconds are obtained by
630
- // decomposing the time within the day. See section 15.9.1.10.
631
- hours = floor(time / 36e5) % 24;
632
- minutes = floor(time / 6e4) % 60;
633
- seconds = floor(time / 1e3) % 60;
634
- milliseconds = time % 1e3;
692
+ // Internal: Recursively serializes an object. Implements the
693
+ // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.
694
+ var serialize = function (
695
+ property,
696
+ object,
697
+ callback,
698
+ properties,
699
+ whitespace,
700
+ indentation,
701
+ stack
702
+ ) {
703
+ var value = object[property],
704
+ className,
705
+ year,
706
+ month,
707
+ date,
708
+ time,
709
+ hours,
710
+ minutes,
711
+ seconds,
712
+ milliseconds,
713
+ results,
714
+ element,
715
+ index,
716
+ length,
717
+ prefix,
718
+ hasMembers,
719
+ result;
720
+ try {
721
+ // Necessary for host object support.
722
+ value = object[property];
723
+ } catch (exception) {}
724
+ if (typeof value === "object" && value) {
725
+ className = getClass.call(value);
726
+ if (className == dateClass && !isProperty.call(value, "toJSON")) {
727
+ if (value > -1 / 0 && value < 1 / 0) {
728
+ // Dates are serialized according to the `Date#toJSON` method
729
+ // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15
730
+ // for the ISO 8601 date time string format.
731
+ if (getDay) {
732
+ // Manually compute the year, month, date, hours, minutes,
733
+ // seconds, and milliseconds if the `getUTC*` methods are
734
+ // buggy. Adapted from @Yaffle's `date-shim` project.
735
+ date = floor(value / 864e5);
736
+ for (
737
+ year = floor(date / 365.2425) + 1970 - 1;
738
+ getDay(year + 1, 0) <= date;
739
+ year++
740
+ );
741
+ for (
742
+ month = floor((date - getDay(year, 0)) / 30.42);
743
+ getDay(year, month + 1) <= date;
744
+ month++
745
+ );
746
+ date = 1 + date - getDay(year, month);
747
+ // The `time` value specifies the time within the day (see ES
748
+ // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used
749
+ // to compute `A modulo B`, as the `%` operator does not
750
+ // correspond to the `modulo` operation for negative numbers.
751
+ time = ((value % 864e5) + 864e5) % 864e5;
752
+ // The hours, minutes, seconds, and milliseconds are obtained by
753
+ // decomposing the time within the day. See section 15.9.1.10.
754
+ hours = floor(time / 36e5) % 24;
755
+ minutes = floor(time / 6e4) % 60;
756
+ seconds = floor(time / 1e3) % 60;
757
+ milliseconds = time % 1e3;
758
+ } else {
759
+ year = value.getUTCFullYear();
760
+ month = value.getUTCMonth();
761
+ date = value.getUTCDate();
762
+ hours = value.getUTCHours();
763
+ minutes = value.getUTCMinutes();
764
+ seconds = value.getUTCSeconds();
765
+ milliseconds = value.getUTCMilliseconds();
766
+ }
767
+ // Serialize extended years correctly.
768
+ value =
769
+ (year <= 0 || year >= 1e4
770
+ ? (year < 0 ? "-" : "+") +
771
+ toPaddedString(6, year < 0 ? -year : year)
772
+ : toPaddedString(4, year)) +
773
+ "-" +
774
+ toPaddedString(2, month + 1) +
775
+ "-" +
776
+ toPaddedString(2, date) +
777
+ // Months, dates, hours, minutes, and seconds should have two
778
+ // digits; milliseconds should have three.
779
+ "T" +
780
+ toPaddedString(2, hours) +
781
+ ":" +
782
+ toPaddedString(2, minutes) +
783
+ ":" +
784
+ toPaddedString(2, seconds) +
785
+ // Milliseconds are optional in ES 5.0, but required in 5.1.
786
+ "." +
787
+ toPaddedString(3, milliseconds) +
788
+ "Z";
635
789
  } else {
636
- year = value.getUTCFullYear();
637
- month = value.getUTCMonth();
638
- date = value.getUTCDate();
639
- hours = value.getUTCHours();
640
- minutes = value.getUTCMinutes();
641
- seconds = value.getUTCSeconds();
642
- milliseconds = value.getUTCMilliseconds();
790
+ value = null;
643
791
  }
644
- // Serialize extended years correctly.
645
- value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +
646
- "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) +
647
- // Months, dates, hours, minutes, and seconds should have two
648
- // digits; milliseconds should have three.
649
- "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) +
650
- // Milliseconds are optional in ES 5.0, but required in 5.1.
651
- "." + toPaddedString(3, milliseconds) + "Z";
652
- } else {
653
- value = null;
792
+ } else if (
793
+ typeof value.toJSON === "function" &&
794
+ ((className != numberClass &&
795
+ className != stringClass &&
796
+ className != arrayClass) ||
797
+ isProperty.call(value, "toJSON"))
798
+ ) {
799
+ // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the
800
+ // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3
801
+ // ignores all `toJSON` methods on these objects unless they are
802
+ // defined directly on an instance.
803
+ value = value.toJSON(property);
654
804
  }
655
- } else if (typeof value.toJSON === "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) {
656
- // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the
657
- // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3
658
- // ignores all `toJSON` methods on these objects unless they are
659
- // defined directly on an instance.
660
- value = value.toJSON(property);
661
805
  }
662
- }
663
- if (callback) {
664
- // If a replacement function was provided, call it to obtain the value
665
- // for serialization.
666
- value = callback.call(object, property, value);
667
- }
668
- if (value === null) {
669
- return "null";
670
- }
671
- className = getClass.call(value);
672
- if (className == booleanClass) {
673
- // Booleans are represented literally.
674
- return "" + value;
675
- } else if (className == numberClass) {
676
- // JSON numbers must be finite. `Infinity` and `NaN` are serialized as
677
- // `"null"`.
678
- return value > -1 / 0 && value < 1 / 0 ? "" + value : "null";
679
- } else if (className == stringClass) {
680
- // Strings are double-quoted and escaped.
681
- return quote("" + value);
682
- }
683
- // Recursively serialize objects and arrays.
684
- if (typeof value === "object") {
685
- // Check for cyclic structures. This is a linear search; performance
686
- // is inversely proportional to the number of unique nested objects.
687
- for (length = stack.length; length--;) {
688
- if (stack[length] === value) {
689
- // Cyclic structures cannot be serialized by `JSON.stringify`.
690
- throw TypeError();
691
- }
806
+ if (callback) {
807
+ // If a replacement function was provided, call it to obtain the value
808
+ // for serialization.
809
+ value = callback.call(object, property, value);
810
+ }
811
+ if (value === null) {
812
+ return "null";
692
813
  }
693
- // Add the object to the stack of traversed objects.
694
- stack.push(value);
695
- results = [];
696
- // Save the current indentation level and indent one additional level.
697
- prefix = indentation;
698
- indentation += whitespace;
699
- if (className == arrayClass) {
700
- // Recursively serialize array elements.
701
- for (index = 0, length = value.length; index < length; hasMembers || (hasMembers = true), index++) {
702
- element = serialize(index, value, callback, properties, whitespace, indentation, stack);
703
- results.push(element === undef ? "null" : element);
814
+ className = getClass.call(value);
815
+ if (className == booleanClass) {
816
+ // Booleans are represented literally.
817
+ return "" + value;
818
+ } else if (className == numberClass) {
819
+ // JSON numbers must be finite. `Infinity` and `NaN` are serialized as
820
+ // `"null"`.
821
+ return value > -1 / 0 && value < 1 / 0 ? "" + value : "null";
822
+ } else if (className == stringClass) {
823
+ // Strings are double-quoted and escaped.
824
+ return quote("" + value);
825
+ }
826
+ // Recursively serialize objects and arrays.
827
+ if (typeof value === "object") {
828
+ // Check for cyclic structures. This is a linear search; performance
829
+ // is inversely proportional to the number of unique nested objects.
830
+ for (length = stack.length; length--; ) {
831
+ if (stack[length] === value) {
832
+ // Cyclic structures cannot be serialized by `JSON.stringify`.
833
+ throw TypeError();
834
+ }
704
835
  }
705
- result = hasMembers ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]";
706
- } else {
707
- // Recursively serialize object members. Members are selected from
708
- // either a user-specified list of property names, or the object
709
- // itself.
710
- forEach(properties || value, function (property) {
711
- var element = serialize(property, value, callback, properties, whitespace, indentation, stack);
712
- if (element !== undef) {
713
- // According to ES 5.1 section 15.12.3: "If `gap` {whitespace}
714
- // is not the empty string, let `member` {quote(property) + ":"}
715
- // be the concatenation of `member` and the `space` character."
716
- // The "`space` character" refers to the literal space
717
- // character, not the `space` {width} argument provided to
718
- // `JSON.stringify`.
719
- results.push(quote(property) + ":" + (whitespace ? " " : "") + element);
836
+ // Add the object to the stack of traversed objects.
837
+ stack.push(value);
838
+ results = [];
839
+ // Save the current indentation level and indent one additional level.
840
+ prefix = indentation;
841
+ indentation += whitespace;
842
+ if (className == arrayClass) {
843
+ // Recursively serialize array elements.
844
+ for (
845
+ index = 0, length = value.length;
846
+ index < length;
847
+ hasMembers || (hasMembers = true), index++
848
+ ) {
849
+ element = serialize(
850
+ index,
851
+ value,
852
+ callback,
853
+ properties,
854
+ whitespace,
855
+ indentation,
856
+ stack
857
+ );
858
+
859
+ results.push(element === undef ? "null" : element);
720
860
  }
721
- hasMembers || (hasMembers = true);
722
- });
723
- result = hasMembers ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}";
861
+ result = hasMembers
862
+ ? whitespace
863
+ ? "[\n" +
864
+ indentation +
865
+ results.join(",\n" + indentation) +
866
+ "\n" +
867
+ prefix +
868
+ "]"
869
+ : "[" + results.join(",") + "]"
870
+ : "[]";
871
+ } else {
872
+ // Recursively serialize object members. Members are selected from
873
+ // either a user-specified list of property names, or the object
874
+ // itself.
875
+ forEach(properties || value, function (property) {
876
+ var element = serialize(
877
+ property,
878
+ value,
879
+ callback,
880
+ properties,
881
+ whitespace,
882
+ indentation,
883
+ stack
884
+ );
885
+
886
+ if (element !== undef) {
887
+ // According to ES 5.1 section 15.12.3: "If `gap` {whitespace}
888
+ // is not the empty string, let `member` {quote(property) + ":"}
889
+ // be the concatenation of `member` and the `space` character."
890
+ // The "`space` character" refers to the literal space
891
+ // character, not the `space` {width} argument provided to
892
+ // `JSON.stringify`.
893
+ results.push(
894
+ quote(property) + ":" + (whitespace ? " " : "") + element
895
+ );
896
+ }
897
+ hasMembers || (hasMembers = true);
898
+ });
899
+ result = hasMembers
900
+ ? whitespace
901
+ ? "{\n" +
902
+ indentation +
903
+ results.join(",\n" + indentation) +
904
+ "\n" +
905
+ prefix +
906
+ "}"
907
+ : "{" + results.join(",") + "}"
908
+ : "{}";
909
+ }
910
+ // Remove the object from the traversed object stack.
911
+ stack.pop();
912
+ return result;
724
913
  }
725
- // Remove the object from the traversed object stack.
726
- stack.pop();
727
- return result;
728
- }
729
- };
914
+ };
730
915
 
731
- // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.
732
- JSON3.stringify = function (source, filter, width) {
733
- var whitespace, callback, properties;
734
- if (typeof filter === "function" || typeof filter === "object" && filter) {
735
- if (getClass.call(filter) == functionClass) {
736
- callback = filter;
737
- } else if (getClass.call(filter) == arrayClass) {
738
- // Convert the property names array into a makeshift set.
739
- properties = {};
740
- for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((getClass.call(value) == stringClass || getClass.call(value) == numberClass) && (properties[value] = 1)));
916
+ // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.
917
+ JSON3.stringify = function (source, filter, width) {
918
+ var whitespace, callback, properties;
919
+ if (
920
+ typeof filter === "function" ||
921
+ (typeof filter === "object" && filter)
922
+ ) {
923
+ if (getClass.call(filter) == functionClass) {
924
+ callback = filter;
925
+ } else if (getClass.call(filter) == arrayClass) {
926
+ // Convert the property names array into a makeshift set.
927
+ properties = {};
928
+ for (
929
+ var index = 0, length = filter.length, value;
930
+ index < length;
931
+ value = filter[index++],
932
+ (getClass.call(value) == stringClass ||
933
+ getClass.call(value) == numberClass) &&
934
+ (properties[value] = 1)
935
+ );
936
+ }
741
937
  }
742
- }
743
- if (width) {
744
- if (getClass.call(width) == numberClass) {
745
- // Convert the `width` to an integer and create a string containing
746
- // `width` number of space characters.
747
- if ((width -= width % 1) > 0) {
748
- for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " ");
938
+ if (width) {
939
+ if (getClass.call(width) == numberClass) {
940
+ // Convert the `width` to an integer and create a string containing
941
+ // `width` number of space characters.
942
+ if ((width -= width % 1) > 0) {
943
+ for (
944
+ whitespace = "", width > 10 && (width = 10);
945
+ whitespace.length < width;
946
+ whitespace += " "
947
+ );
948
+ }
949
+ } else if (getClass.call(width) == stringClass) {
950
+ whitespace = width.length <= 10 ? width : width.slice(0, 10);
749
951
  }
750
- } else if (getClass.call(width) == stringClass) {
751
- whitespace = width.length <= 10 ? width : width.slice(0, 10);
752
952
  }
753
- }
754
- // Opera <= 7.54u2 discards the values associated with empty string keys
755
- // (`""`) only if they are used directly within an object member list
756
- // (e.g., `!("" in { "": 1})`).
757
- return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []);
758
- };
759
- }
953
+ // Opera <= 7.54u2 discards the values associated with empty string keys
954
+ // (`""`) only if they are used directly within an object member list
955
+ // (e.g., `!("" in { "": 1})`).
956
+ return serialize(
957
+ "",
958
+ ((value = {}), (value[""] = source), value),
959
+ callback,
960
+ properties,
961
+ whitespace,
962
+ "",
963
+ []
964
+ );
965
+ };
966
+ }
760
967
 
761
- // Public: Parses a JSON source string.
762
- if (!has("json-parse")) {
763
- var fromCharCode = String.fromCharCode;
968
+ // Public: Parses a JSON source string.
969
+ if (!has("json-parse")) {
970
+ var fromCharCode = String.fromCharCode;
764
971
 
765
- // Internal: A map of escaped control characters and their unescaped
766
- // equivalents.
767
- var Unescapes = {
768
- 92: "\\",
769
- 34: '"',
770
- 47: "/",
771
- 98: "\b",
772
- 116: "\t",
773
- 110: "\n",
774
- 102: "\f",
775
- 114: "\r"
776
- };
972
+ // Internal: A map of escaped control characters and their unescaped
973
+ // equivalents.
974
+ var Unescapes = {
975
+ 92: "\\",
976
+ 34: '"',
977
+ 47: "/",
978
+ 98: "\b",
979
+ 116: "\t",
980
+ 110: "\n",
981
+ 102: "\f",
982
+ 114: "\r"
983
+ };
777
984
 
778
- // Internal: Stores the parser state.
779
- var Index, Source;
985
+ // Internal: Stores the parser state.
986
+ var Index, Source;
780
987
 
781
- // Internal: Resets the parser state and throws a `SyntaxError`.
782
- var abort = function() {
783
- Index = Source = null;
784
- throw SyntaxError();
785
- };
988
+ // Internal: Resets the parser state and throws a `SyntaxError`.
989
+ var abort = function () {
990
+ Index = Source = null;
991
+ throw SyntaxError();
992
+ };
786
993
 
787
- // Internal: Returns the next token, or `"$"` if the parser has reached
788
- // the end of the source string. A token may be a string, number, `null`
789
- // literal, or Boolean literal.
790
- var lex = function () {
791
- var source = Source, length = source.length, value, begin, position, isSigned, charCode;
792
- while (Index < length) {
793
- charCode = source.charCodeAt(Index);
794
- switch (charCode) {
795
- case 9: case 10: case 13: case 32:
796
- // Skip whitespace tokens, including tabs, carriage returns, line
797
- // feeds, and space characters.
798
- Index++;
799
- break;
800
- case 123: case 125: case 91: case 93: case 58: case 44:
801
- // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at
802
- // the current position.
803
- value = charIndexBuggy ? source.charAt(Index) : source[Index];
804
- Index++;
805
- return value;
806
- case 34:
807
- // `"` delimits a JSON string; advance to the next character and
808
- // begin parsing the string. String tokens are prefixed with the
809
- // sentinel `@` character to distinguish them from punctuators and
810
- // end-of-string tokens.
811
- for (value = "@", Index++; Index < length;) {
812
- charCode = source.charCodeAt(Index);
813
- if (charCode < 32) {
814
- // Unescaped ASCII control characters (those with a code unit
815
- // less than the space character) are not permitted.
816
- abort();
817
- } else if (charCode == 92) {
818
- // A reverse solidus (`\`) marks the beginning of an escaped
819
- // control character (including `"`, `\`, and `/`) or Unicode
820
- // escape sequence.
821
- charCode = source.charCodeAt(++Index);
822
- switch (charCode) {
823
- case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114:
824
- // Revive escaped control characters.
825
- value += Unescapes[charCode];
826
- Index++;
827
- break;
828
- case 117:
829
- // `\u` marks the beginning of a Unicode escape sequence.
830
- // Advance to the first character and validate the
831
- // four-digit code point.
832
- begin = ++Index;
833
- for (position = Index + 4; Index < position; Index++) {
834
- charCode = source.charCodeAt(Index);
835
- // A valid sequence comprises four hexdigits (case-
836
- // insensitive) that form a single hexadecimal value.
837
- if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {
838
- // Invalid Unicode escape sequence.
839
- abort();
994
+ // Internal: Returns the next token, or `"$"` if the parser has reached
995
+ // the end of the source string. A token may be a string, number, `null`
996
+ // literal, or Boolean literal.
997
+ var lex = function () {
998
+ var source = Source,
999
+ length = source.length,
1000
+ value,
1001
+ begin,
1002
+ position,
1003
+ isSigned,
1004
+ charCode;
1005
+ while (Index < length) {
1006
+ charCode = source.charCodeAt(Index);
1007
+ switch (charCode) {
1008
+ case 9:
1009
+ case 10:
1010
+ case 13:
1011
+ case 32:
1012
+ // Skip whitespace tokens, including tabs, carriage returns, line
1013
+ // feeds, and space characters.
1014
+ Index++;
1015
+ break;
1016
+ case 123:
1017
+ case 125:
1018
+ case 91:
1019
+ case 93:
1020
+ case 58:
1021
+ case 44:
1022
+ // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at
1023
+ // the current position.
1024
+ value = charIndexBuggy ? source.charAt(Index) : source[Index];
1025
+ Index++;
1026
+ return value;
1027
+ case 34:
1028
+ // `"` delimits a JSON string; advance to the next character and
1029
+ // begin parsing the string. String tokens are prefixed with the
1030
+ // sentinel `@` character to distinguish them from punctuators and
1031
+ // end-of-string tokens.
1032
+ for (value = "@", Index++; Index < length; ) {
1033
+ charCode = source.charCodeAt(Index);
1034
+ if (charCode < 32) {
1035
+ // Unescaped ASCII control characters (those with a code unit
1036
+ // less than the space character) are not permitted.
1037
+ abort();
1038
+ } else if (charCode == 92) {
1039
+ // A reverse solidus (`\`) marks the beginning of an escaped
1040
+ // control character (including `"`, `\`, and `/`) or Unicode
1041
+ // escape sequence.
1042
+ charCode = source.charCodeAt(++Index);
1043
+ switch (charCode) {
1044
+ case 92:
1045
+ case 34:
1046
+ case 47:
1047
+ case 98:
1048
+ case 116:
1049
+ case 110:
1050
+ case 102:
1051
+ case 114:
1052
+ // Revive escaped control characters.
1053
+ value += Unescapes[charCode];
1054
+ Index++;
1055
+ break;
1056
+ case 117:
1057
+ // `\u` marks the beginning of a Unicode escape sequence.
1058
+ // Advance to the first character and validate the
1059
+ // four-digit code point.
1060
+ begin = ++Index;
1061
+ for (position = Index + 4; Index < position; Index++) {
1062
+ charCode = source.charCodeAt(Index);
1063
+ // A valid sequence comprises four hexdigits (case-
1064
+ // insensitive) that form a single hexadecimal value.
1065
+ if (
1066
+ !(
1067
+ (charCode >= 48 && charCode <= 57) ||
1068
+ (charCode >= 97 && charCode <= 102) ||
1069
+ (charCode >= 65 && charCode <= 70)
1070
+ )
1071
+ ) {
1072
+ // Invalid Unicode escape sequence.
1073
+ abort();
1074
+ }
840
1075
  }
841
- }
842
- // Revive the escaped character.
843
- value += fromCharCode("0x" + source.slice(begin, Index));
1076
+ // Revive the escaped character.
1077
+ value += fromCharCode(
1078
+ "0x" + source.slice(begin, Index)
1079
+ );
1080
+
1081
+ break;
1082
+ default:
1083
+ // Invalid escape sequence.
1084
+ abort();
1085
+ }
1086
+ } else {
1087
+ if (charCode == 34) {
1088
+ // An unescaped double-quote character marks the end of the
1089
+ // string.
844
1090
  break;
845
- default:
846
- // Invalid escape sequence.
847
- abort();
1091
+ }
1092
+ charCode = source.charCodeAt(Index);
1093
+ begin = Index;
1094
+ // Optimize for the common case where a string is valid.
1095
+ while (charCode >= 32 && charCode != 92 && charCode != 34) {
1096
+ charCode = source.charCodeAt(++Index);
1097
+ }
1098
+ // Append the string as-is.
1099
+ value += source.slice(begin, Index);
848
1100
  }
849
- } else {
850
- if (charCode == 34) {
851
- // An unescaped double-quote character marks the end of the
852
- // string.
853
- break;
1101
+ }
1102
+ if (source.charCodeAt(Index) == 34) {
1103
+ // Advance to the next character and return the revived string.
1104
+ Index++;
1105
+ return value;
1106
+ }
1107
+ // Unterminated string.
1108
+ abort();
1109
+ default:
1110
+ // Parse numbers and literals.
1111
+ begin = Index;
1112
+ // Advance past the negative sign, if one is specified.
1113
+ if (charCode == 45) {
1114
+ isSigned = true;
1115
+ charCode = source.charCodeAt(++Index);
1116
+ }
1117
+ // Parse an integer or floating-point value.
1118
+ if (charCode >= 48 && charCode <= 57) {
1119
+ // Leading zeroes are interpreted as octal literals.
1120
+ if (
1121
+ charCode == 48 &&
1122
+ ((charCode = source.charCodeAt(Index + 1)),
1123
+ charCode >= 48 && charCode <= 57)
1124
+ ) {
1125
+ // Illegal octal literal.
1126
+ abort();
1127
+ }
1128
+ isSigned = false;
1129
+ // Parse the integer component.
1130
+ for (
1131
+ ;
1132
+ Index < length &&
1133
+ ((charCode = source.charCodeAt(Index)),
1134
+ charCode >= 48 && charCode <= 57);
1135
+ Index++
1136
+ );
1137
+ // Floats cannot contain a leading decimal point; however, this
1138
+ // case is already accounted for by the parser.
1139
+ if (source.charCodeAt(Index) == 46) {
1140
+ position = ++Index;
1141
+ // Parse the decimal component.
1142
+ for (
1143
+ ;
1144
+ position < length &&
1145
+ ((charCode = source.charCodeAt(position)),
1146
+ charCode >= 48 && charCode <= 57);
1147
+ position++
1148
+ );
1149
+ if (position == Index) {
1150
+ // Illegal trailing decimal.
1151
+ abort();
1152
+ }
1153
+ Index = position;
854
1154
  }
1155
+ // Parse exponents. The `e` denoting the exponent is
1156
+ // case-insensitive.
855
1157
  charCode = source.charCodeAt(Index);
856
- begin = Index;
857
- // Optimize for the common case where a string is valid.
858
- while (charCode >= 32 && charCode != 92 && charCode != 34) {
1158
+ if (charCode == 101 || charCode == 69) {
859
1159
  charCode = source.charCodeAt(++Index);
1160
+ // Skip past the sign following the exponent, if one is
1161
+ // specified.
1162
+ if (charCode == 43 || charCode == 45) {
1163
+ Index++;
1164
+ }
1165
+ // Parse the exponential component.
1166
+ for (
1167
+ position = Index;
1168
+ position < length &&
1169
+ ((charCode = source.charCodeAt(position)),
1170
+ charCode >= 48 && charCode <= 57);
1171
+ position++
1172
+ );
1173
+ if (position == Index) {
1174
+ // Illegal empty exponent.
1175
+ abort();
1176
+ }
1177
+ Index = position;
860
1178
  }
861
- // Append the string as-is.
862
- value += source.slice(begin, Index);
1179
+ // Coerce the parsed value to a JavaScript number.
1180
+ return +source.slice(begin, Index);
863
1181
  }
864
- }
865
- if (source.charCodeAt(Index) == 34) {
866
- // Advance to the next character and return the revived string.
867
- Index++;
868
- return value;
869
- }
870
- // Unterminated string.
871
- abort();
872
- default:
873
- // Parse numbers and literals.
874
- begin = Index;
875
- // Advance past the negative sign, if one is specified.
876
- if (charCode == 45) {
877
- isSigned = true;
878
- charCode = source.charCodeAt(++Index);
879
- }
880
- // Parse an integer or floating-point value.
881
- if (charCode >= 48 && charCode <= 57) {
882
- // Leading zeroes are interpreted as octal literals.
883
- if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {
884
- // Illegal octal literal.
1182
+ // A negative sign may only precede numbers.
1183
+ if (isSigned) {
885
1184
  abort();
886
1185
  }
887
- isSigned = false;
888
- // Parse the integer component.
889
- for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++);
890
- // Floats cannot contain a leading decimal point; however, this
891
- // case is already accounted for by the parser.
892
- if (source.charCodeAt(Index) == 46) {
893
- position = ++Index;
894
- // Parse the decimal component.
895
- for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
896
- if (position == Index) {
897
- // Illegal trailing decimal.
898
- abort();
899
- }
900
- Index = position;
901
- }
902
- // Parse exponents. The `e` denoting the exponent is
903
- // case-insensitive.
904
- charCode = source.charCodeAt(Index);
905
- if (charCode == 101 || charCode == 69) {
906
- charCode = source.charCodeAt(++Index);
907
- // Skip past the sign following the exponent, if one is
908
- // specified.
909
- if (charCode == 43 || charCode == 45) {
910
- Index++;
911
- }
912
- // Parse the exponential component.
913
- for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
914
- if (position == Index) {
915
- // Illegal empty exponent.
916
- abort();
917
- }
918
- Index = position;
1186
+ // `true`, `false`, and `null` literals.
1187
+ if (source.slice(Index, Index + 4) === "true") {
1188
+ Index += 4;
1189
+ return true;
1190
+ } else if (source.slice(Index, Index + 5) === "false") {
1191
+ Index += 5;
1192
+ return false;
1193
+ } else if (source.slice(Index, Index + 4) === "null") {
1194
+ Index += 4;
1195
+ return null;
919
1196
  }
920
- // Coerce the parsed value to a JavaScript number.
921
- return +source.slice(begin, Index);
922
- }
923
- // A negative sign may only precede numbers.
924
- if (isSigned) {
1197
+ // Unrecognized token.
925
1198
  abort();
926
- }
927
- // `true`, `false`, and `null` literals.
928
- if (source.slice(Index, Index + 4) === "true") {
929
- Index += 4;
930
- return true;
931
- } else if (source.slice(Index, Index + 5) === "false") {
932
- Index += 5;
933
- return false;
934
- } else if (source.slice(Index, Index + 4) === "null") {
935
- Index += 4;
936
- return null;
937
- }
938
- // Unrecognized token.
939
- abort();
1199
+ }
940
1200
  }
941
- }
942
- // Return the sentinel `$` character if the parser has reached the end
943
- // of the source string.
944
- return "$";
945
- };
1201
+ // Return the sentinel `$` character if the parser has reached the end
1202
+ // of the source string.
1203
+ return "$";
1204
+ };
946
1205
 
947
- // Internal: Parses a JSON `value` token.
948
- var get = function (value) {
949
- var results, hasMembers;
950
- if (value === "$") {
951
- // Unexpected end of input.
952
- abort();
953
- }
954
- if (typeof value === "string") {
955
- if ((charIndexBuggy ? value.charAt(0) : value[0]) === "@") {
956
- // Remove the sentinel `@` character.
957
- return value.slice(1);
1206
+ // Internal: Parses a JSON `value` token.
1207
+ var get = function (value) {
1208
+ var results, hasMembers;
1209
+ if (value === "$") {
1210
+ // Unexpected end of input.
1211
+ abort();
958
1212
  }
959
- // Parse object and array literals.
960
- if (value === "[") {
961
- // Parses a JSON array, returning a new JavaScript array.
962
- results = [];
963
- for (;; hasMembers || (hasMembers = true)) {
964
- value = lex();
965
- // A closing square bracket marks the end of the array literal.
966
- if (value === "]") {
967
- break;
968
- }
969
- // If the array literal contains elements, the current token
970
- // should be a comma separating the previous element from the
971
- // next.
972
- if (hasMembers) {
973
- if (value === ",") {
974
- value = lex();
975
- if (value === "]") {
976
- // Unexpected trailing `,` in array literal.
1213
+ if (typeof value === "string") {
1214
+ if ((charIndexBuggy ? value.charAt(0) : value[0]) === "@") {
1215
+ // Remove the sentinel `@` character.
1216
+ return value.slice(1);
1217
+ }
1218
+ // Parse object and array literals.
1219
+ if (value === "[") {
1220
+ // Parses a JSON array, returning a new JavaScript array.
1221
+ results = [];
1222
+ for (; ; hasMembers || (hasMembers = true)) {
1223
+ value = lex();
1224
+ // A closing square bracket marks the end of the array literal.
1225
+ if (value === "]") {
1226
+ break;
1227
+ }
1228
+ // If the array literal contains elements, the current token
1229
+ // should be a comma separating the previous element from the
1230
+ // next.
1231
+ if (hasMembers) {
1232
+ if (value === ",") {
1233
+ value = lex();
1234
+ if (value === "]") {
1235
+ // Unexpected trailing `,` in array literal.
1236
+ abort();
1237
+ }
1238
+ } else {
1239
+ // A `,` must separate each array element.
977
1240
  abort();
978
1241
  }
979
- } else {
980
- // A `,` must separate each array element.
1242
+ }
1243
+ // Elisions and leading commas are not permitted.
1244
+ if (value === ",") {
981
1245
  abort();
982
1246
  }
1247
+ results.push(get(value));
983
1248
  }
984
- // Elisions and leading commas are not permitted.
985
- if (value === ",") {
986
- abort();
987
- }
988
- results.push(get(value));
989
- }
990
- return results;
991
- } else if (value === "{") {
992
- // Parses a JSON object, returning a new JavaScript object.
993
- results = {};
994
- for (;; hasMembers || (hasMembers = true)) {
995
- value = lex();
996
- // A closing curly brace marks the end of the object literal.
997
- if (value == "}") {
998
- break;
999
- }
1000
- // If the object literal contains members, the current token
1001
- // should be a comma separator.
1002
- if (hasMembers) {
1003
- if (value === ",") {
1004
- value = lex();
1005
- if (value === "}") {
1006
- // Unexpected trailing `,` in object literal.
1249
+ return results;
1250
+ } else if (value === "{") {
1251
+ // Parses a JSON object, returning a new JavaScript object.
1252
+ results = {};
1253
+ for (; ; hasMembers || (hasMembers = true)) {
1254
+ value = lex();
1255
+ // A closing curly brace marks the end of the object literal.
1256
+ if (value == "}") {
1257
+ break;
1258
+ }
1259
+ // If the object literal contains members, the current token
1260
+ // should be a comma separator.
1261
+ if (hasMembers) {
1262
+ if (value === ",") {
1263
+ value = lex();
1264
+ if (value === "}") {
1265
+ // Unexpected trailing `,` in object literal.
1266
+ abort();
1267
+ }
1268
+ } else {
1269
+ // A `,` must separate each object member.
1007
1270
  abort();
1008
1271
  }
1009
- } else {
1010
- // A `,` must separate each object member.
1272
+ }
1273
+ // Leading commas are not permitted, object property names must be
1274
+ // double-quoted strings, and a `:` must separate each property
1275
+ // name and value.
1276
+ if (
1277
+ value === "," ||
1278
+ typeof value !== "string" ||
1279
+ (charIndexBuggy ? value.charAt(0) : value[0]) !== "@" ||
1280
+ lex() !== ":"
1281
+ ) {
1011
1282
  abort();
1012
1283
  }
1284
+ results[value.slice(1)] = get(lex());
1013
1285
  }
1014
- // Leading commas are not permitted, object property names must be
1015
- // double-quoted strings, and a `:` must separate each property
1016
- // name and value.
1017
- if (value === "," || typeof value !== "string" || (charIndexBuggy ? value.charAt(0) : value[0]) !== "@" || lex() !== ":") {
1018
- abort();
1019
- }
1020
- results[value.slice(1)] = get(lex());
1286
+ return results;
1021
1287
  }
1022
- return results;
1288
+ // Unexpected token encountered.
1289
+ abort();
1023
1290
  }
1024
- // Unexpected token encountered.
1025
- abort();
1026
- }
1027
- return value;
1028
- };
1291
+ return value;
1292
+ };
1029
1293
 
1030
- // Internal: Updates a traversed object member.
1031
- var update = function(source, property, callback) {
1032
- var element = walk(source, property, callback);
1033
- if (element === undef) {
1034
- delete source[property];
1035
- } else {
1036
- source[property] = element;
1037
- }
1038
- };
1294
+ // Internal: Updates a traversed object member.
1295
+ var update = function (source, property, callback) {
1296
+ var element = walk(source, property, callback);
1297
+ if (element === undef) {
1298
+ delete source[property];
1299
+ } else {
1300
+ source[property] = element;
1301
+ }
1302
+ };
1039
1303
 
1040
- // Internal: Recursively traverses a parsed JSON object, invoking the
1041
- // `callback` function for each value. This is an implementation of the
1042
- // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.
1043
- var walk = function (source, property, callback) {
1044
- var value = source[property], length;
1045
- if (typeof value === "object" && value) {
1046
- // `forEach` can't be used to traverse an array in Opera <= 8.54
1047
- // because its `Object#hasOwnProperty` implementation returns `false`
1048
- // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).
1049
- if (getClass.call(value) == arrayClass) {
1050
- for (length = value.length; length--;) {
1051
- update(value, length, callback);
1304
+ // Internal: Recursively traverses a parsed JSON object, invoking the
1305
+ // `callback` function for each value. This is an implementation of the
1306
+ // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.
1307
+ var walk = function (source, property, callback) {
1308
+ var value = source[property],
1309
+ length;
1310
+ if (typeof value === "object" && value) {
1311
+ // `forEach` can't be used to traverse an array in Opera <= 8.54
1312
+ // because its `Object#hasOwnProperty` implementation returns `false`
1313
+ // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).
1314
+ if (getClass.call(value) == arrayClass) {
1315
+ for (length = value.length; length--; ) {
1316
+ update(value, length, callback);
1317
+ }
1318
+ } else {
1319
+ forEach(value, function (property) {
1320
+ update(value, property, callback);
1321
+ });
1052
1322
  }
1053
- } else {
1054
- forEach(value, function (property) {
1055
- update(value, property, callback);
1056
- });
1057
1323
  }
1058
- }
1059
- return callback.call(source, property, value);
1060
- };
1324
+ return callback.call(source, property, value);
1325
+ };
1061
1326
 
1062
- // Public: `JSON.parse`. See ES 5.1 section 15.12.2.
1063
- JSON3.parse = function (source, callback) {
1064
- var result, value;
1065
- Index = 0;
1066
- Source = "" + source;
1067
- result = get(lex());
1068
- // If a JSON string contains multiple tokens, it is invalid.
1069
- if (lex() != "$") {
1070
- abort();
1071
- }
1072
- // Reset the parser state.
1073
- Index = Source = null;
1074
- return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result;
1075
- };
1327
+ // Public: `JSON.parse`. See ES 5.1 section 15.12.2.
1328
+ JSON3.parse = function (source, callback) {
1329
+ var result, value;
1330
+ Index = 0;
1331
+ Source = "" + source;
1332
+ result = get(lex());
1333
+ // If a JSON string contains multiple tokens, it is invalid.
1334
+ if (lex() != "$") {
1335
+ abort();
1336
+ }
1337
+ // Reset the parser state.
1338
+ Index = Source = null;
1339
+ return callback && getClass.call(callback) == functionClass
1340
+ ? walk(((value = {}), (value[""] = result), value), "", callback)
1341
+ : result;
1342
+ };
1343
+ }
1076
1344
  }
1077
- }
1078
1345
 
1079
- // Export for asynchronous module loaders.
1080
- if (isLoader) {
1081
- define(function () {
1082
- return JSON3;
1083
- });
1084
- }
1085
- }(this||window));
1086
- // End of original code.
1087
- }());
1346
+ // Export for asynchronous module loaders.
1347
+ if (isLoader) {
1348
+ define(function () {
1349
+ return JSON3;
1350
+ });
1351
+ }
1352
+ })(this || window);
1353
+ // End of original code.
1354
+ })();
1088
1355
 
1089
1356
  // Finally expose (polyfilled) window.JSON as qx.lang.Json.JSON
1090
1357
  qx.lang.Json.stringify = window.JSON.stringify;